Inquiridor
Execução de JOB DTS SQL 2000.

Pergunta
-
Amigos,
estou com uma duvida no minimo curiosa, porem nao sei como resolver.Seguinte tenho uma DTS SQL 2000 que tem a função de copiar e importar arquivos de um diretório para minha maquina e importar para uma tabela.
Bom o 1 step é apagar os arquivos existentes em uma pasta de destino, pois tenho sempre que ter o ultimo arquivo nesta pasta e o 2 step é copiar o arquivo de um diretorio para esta mesma pasta.O primeiro step é feito com de uma bat e o 2 com um codigo vb activex, meu problema é o seguinte se eu agendar um JOB ele executa somente o 1 step nao passando para o segundo, mas se eu executar manualmente o pacote ele executa o pacote inteiro.
Alguem pode me ajudar, ja dei permissao total ao sa e para meu perfil....
Todas as Respostas
-
Leandro, boa tarde,
Veja se no primeiro passo a task não está dando erro e verifique se o seu job está reportando os devidos erros na opção advanced do step.
Enfatizando que quando trabalhamos com arquivos em pacotes DTS, precisamos nos preocupar no caminho do arquivo informado, ou seja, uma coisa é vc rodar um pacote em sua máquina local, outra coisa é vc rodar o pacote no servidor, pois o caminho é totalmente diferente. Verifique se não é este o problema.
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
-
Eduardo,
o primeiro step é uma bat que apaga os arquivos em uma pasta determinada, este passo esta OK.Porém o segundo passo que é copiar os arquivos usando Activex não funciona, fiz um teste criei um step em Activex separado e agendei um JOB para o mesmo, e o JOB iniciou porém nao executou a tarefa, vale ressaltar que é o mesmo código que não funfa no outro Package e o teste foi em um package a parte.
-
-
Eduardo,
Realizei um teste e o seguinte aconteceu:
Cenário 1 - Mudei o diretório de busca que no script original aponta para um diretório mapeado para uma pasta em meu próprio PC. Resultado do Step Sucesso.
Cenário 2 - Mudei novamente para o mapeamento da Rede.Resultado JOB não executa o processo.
Minha conclusão é a seguinte, por algum motivo quando é executado o package com o JOB ele não reconhece o diretório de forma mapeada na rede, que manualmente ao executar o package ele reconhece.
Alguma sugestão para resolução do problema, o endereço do diretório é \\10.178.18.78\relatorios\Lancamento_Creditos e esta mapeado como L:\.
abs
-
Leandro, vc está colocando \\10.178.18.78 ou L:\ ?
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
-
-
Se vc utilizar \\10.178.18.78 funcionaria? Pois desta forma é ideal. Seu pacote funcionaria em qualquer máquina dentro da sua rede.
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
-
Eduardo,
Eu uso este script:
'**********************************************************************
' Visual Basic ActiveX Script
'************************************************************************
Function Main()
Dim sSourceFile
Dim sDestinationFile
Dim FSO' As Scripting.FileSystemObject
Dim SourceFolder 'As Scripting.Folder, SubFolder As Scripting.Folder
Dim FileItem' As Scripting.File
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = FSO.GetFolder("L:\") ' Aqui eu uso o L como forma de mapeamento do \\10.178.18.78 se mudar para esta forma que sugeriu nao funfa
sDestinationFile = "C:\12\"
i = 1
For Each FileItem In SourceFolder.Files
If i = 1 Then datamax = FileItem.DateCreated
If datamax < FileItem.DateCreated Then datamax = FileItem.DateCreated
i = i + 1
Next' FileItem
For Each FileItem In SourceFolder.Files
r = 1
sSourceFile = FileItem.Path
sSourceFileshort = FileItem.Name
If Right(sSourceFile, 3) <> ".gz" Then r = 0
sDestinationFile = "C:\12\" & sSourceFileshort
if r = 1 then If CDate(FileItem.DateCreated) = CDate(datamax) Then FSO.CopyFile sSourceFile, sDestinationFile
Next' FileItem
' Clean Up
Set FSO = Nothing
Main = DTSTaskExecResult_Success
End Function -
É script VB não é o meu forte, mas tudo bem... o que vc pode fazer também é mapear a pasta com a letra "L:\" em todos os lugares que o dts será executado.
Dê uma pesquisada mais a fundo no método GetFolder, talvez haja uma outra solução.
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp