none
Execução de JOB DTS SQL 2000. RRS feed

  • 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....

    terça-feira, 7 de fevereiro de 2012 15:57

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

    terça-feira, 7 de fevereiro de 2012 17:19
  • 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.

    terça-feira, 7 de fevereiro de 2012 20:07
  • Leandro, verifique se os componentes desse activex que vc chama estão devidamente instalados no servidor.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    terça-feira, 7 de fevereiro de 2012 20:11
  • 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

    quarta-feira, 8 de fevereiro de 2012 16:03
  • Leandro, vc está colocando \\10.178.18.78 ou L:\ ?

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    quarta-feira, 8 de fevereiro de 2012 16:44
  • Eduardo, mapei como L:\.
    quarta-feira, 8 de fevereiro de 2012 17:48
  • 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

    quarta-feira, 8 de fevereiro de 2012 17:58
  • 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

    quarta-feira, 8 de fevereiro de 2012 18:22
  • É 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

    quarta-feira, 8 de fevereiro de 2012 18:26