Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ricardo Santos Bezerra

Job central

Recommended Posts

Bom dia!

 

Eu estou utilizando o SSMS 2008 e Integration Services. Aqui na empresa estamos utilizando o processo de ETL para trazer informações de planilhas Excel para o BD SQL. Até ai sem problemas, mas preciso criar jobs, estou com esse processo em andamento mas, tenho que criar um job principal que, em dado momento, ele ative uma sequencia de jobs que devem funcionar assim: Planilhas Excel dentro do diretório C:\ --> Verdadeiro? Sim, realiza um UPDATE e atualiza as informações, as informações que já existem ele sobrepõe, as que ainda não existem, ele insere. --> Não, passa para a próxima planilha.

 

Outra coisa, consigo deixar o "diretório" como parâmetro? Assim quando for utilizar esse job em produção, apenas faço o apontamento, sem precisar recriá-lo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Ricardo,

 

Cara, dá pra fazer este processo todo pelo SSIS.

 

Da uma lida aqui neste link:

http://msdn.microsoft.com/pt-br/library/hh213214.aspx

 

Eu tenho alguns exemplos e vou tentar colocar no meu blog. Assim que colocar eu te passo o link.

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ricardo, me manda seu email. Eu montei um documento e ficou meio extenso para postar e como estou sem tempo para arrumar, vou lhe mandar depois eu posto aqui e no meu blog.

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, sai de folga e só voltei hoje.

 

Meus e-mails: ricardosbezerra1980@gmail.com ou rico.bezerra@hotmail.com

 

Obrigado e abraço.

 

Então, andei dando uma olhada na net e percebi que no meu caso não se encaixa um loop mesmo, pois a verificação deve ser sequencial. Estou dando uma olhada no Sequence Container...Esse meu caso é aparentemente mais simples.

 

No SSIS preciso criar um Job principal que "chame" os demais Jobs que já criei, algo como esse exemplo:

 

If [Planilha] is present [\\C:\XYZ]

 

Exec Job 1

 

End If

 

If [Planilha] is present [\\C:\XYZ]

 

Exec Job 2

 

End If

 

...

 

If [Planilha] is present [\\C:\XYZ]

 

Exec Job n

 

End If

 

Nota: "Caso a Planilha não exista nesse diretório, o meu Job deve entender que ela já foi executada antes e passar para o próximo passo".

 

Nota 2: "Existe a possibilidade de utilizar o diratório como parametro? Assim, quando for utilizar em produção, apenas realizo o apontamento de diretório para um de produção, evitando precisar retrabalho".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, sai de folga e só voltei hoje.

 

Meus e-mails: ricardosbezerra1980@gmail.com ou rico.bezerra@hotmail.com

 

Obrigado e abraço.

 

Sem problemas. Final de ano não é uma boa época para se implantar nada rs

 

Então, andei dando uma olhada na net e percebi que no meu caso não se encaixa um loop mesmo, pois a verificação deve ser sequencial. Estou dando uma olhada no Sequence Container...Esse meu caso é aparentemente mais simples.

 

 

(...)

 

If [Planilha] is present [\\C:\XYZ]

 

Exec Job n

 

End If

Realmente mais simples e com o Sequence Container consegue fazer.

 

 

Nota 2: "Existe a possibilidade de utilizar o diratório como parametro? Assim, quando for utilizar em produção, apenas realizo o apontamento de diretório para um de produção, evitando precisar retrabalho".

Sim. Existe esta possibilidade e é justamente isso que tenho no artigo. Um DTSx que pode ser utilizado em qq ambiente passando parâmetro de nome de servidor, database e local de exportação de um arquivo.

Fiz isso em alguns clientes para homologação e produção.

 

Vou tentar te mandar o mais rápido possível.

 

[]´s

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque a parte comentada desse script não roda? O que estou fazendo de errado? (A idéia seria conseguir verificar se existe ou não uma planilha em um diretório).

 

Use SelfInformation

GO

 

CREATE TABLE TblPlanilhas(

Planilha nvarchar(255),

Job nvarchar(255))

GO

 

DECLARE

@Planilha NVARCHAR(100),

@Job NVARCHAR(10),

@Result INT,

@CMD NVARCHAR(4000)

 

DECLARE ListPlanilhas CURSOR FOR

SELECT

Planilha,

Job

FROM

TblPlanilhas

 

OPEN

ListPlanilhas

FETCH NEXT FROM

ListPlanilhas INTO @Planilha, @Job

 

WHILE @@FETCH_STATUS = 0

BEGIN

EXEC XP_FILEEXIST @Planilha, @RESULT OUTPUT

IF (@RESULT = 1)

 

/*IF FILE EXISTS EXEC SSIS PACKAGE

BEGIN

EXEC xp_cmdshell 'dtexec /f "C:\'@Job+'"'+'

*/

 

 

print 'Planilha ' + @Planilha + ' existe'

 

 

FETCH NEXT FROM ListPlanilhas INTO @Planilha, @Job

END

 

CLOSE ListPlanilhas

DEALLOCATE ListPlanilhas

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.