none
Execucao DTS atraves de un Batch RRS feed

  • Pergunta

  • Ola Amigos, tenho um problema aqui, tenho un DTS e quero que atraves de un bath o usuario execute o pacote.

     

    o Batch tem as seguintes linhas:

     

    echo on
    REM Inicio da Carga Financeiro %DATE% as %TIME% >>

    dtexec /f "\\hdbapl2\BI\fontesoficial\integration services hd_protheus\integration services hd\Carga BI_KN.dtsx"        /l "DTS.LogProviderTextFile;\\hdbapl2\BI\Log\Carga BI_KN.txt"

    dtexec /f "\\hdbapl2\BI\fontesoficial\integration services hd_protheus\integration services hd\Balance_Income (1).dtsx" /l "DTS.LogProviderTextFile;\\hdbapl2\BI\Log\Balance_Income.txt"

    dtexec /f "\\hdbapl2\BI\fontesoficial\integration services hd_protheus\integration services hd\KeyNumber (2).dtsx"      /l "DTS.LogProviderTextFile;\\hdbapl2\BI\Log\KeyNumber.txt"

    dtexec /f "\\hdbapl2\BI\fontesoficial\integration services hd_protheus\integration services hd\Pms (2).dtsx"            /l "DTS.LogProviderTextFile;\\hdbapl2\BI\Log\Pms.txt"

    dtexec /f "\\hdbapl2\BI\fontesoficial\integration services hd_protheus\integration services hd\Shrink (2).dtsx"         /l "DTS.LogProviderTextFile;\\hdbapl2\BI\Log\Shrink.txt"

    REM Fim da Carga - Financeiro  %DATE% as %TIME% >>

    pause

     

    Mensagem de erro do batch:

     

    dtexec nao e reconhecido como comando interno ou externo, um programa operavel ou um arquivo en lotes.

     

    so que de minha maquina eu consigo executar sem problemas agora da maquina do usuario nao executa, eu imagino que deve estar faltando instalar algo, mas nao sei o que e.

     

    Obrigado

     

    sexta-feira, 14 de setembro de 2007 18:27

Respostas

Todas as Respostas

  • Reinaldo,

     

    Você já verificou se na variável de sistema do seu Windows, esta declarado o Path(caminho), a onde se encontra instalado o dtexec?

     

    sexta-feira, 14 de setembro de 2007 20:19
  • Sim, esta declarado o caminho do dtexec.

     

    sexta-feira, 14 de setembro de 2007 20:25
  • Reinaldo,

     

    Você não pode executar esse DTS através de um programa em VB não? Pois nisso eu tenho experiência.

     

    Veja o exemplo:

     

    Primeiramente adicione as referencias:

    Microsoft DTS Custom Tasks Object Library

    Microsoft DTSDataPump Scripting Object Library

    Microsoft DTSPackage Object Library

     

    Code Snippet

     

    Dim dtsp As New DTS.Package2

    Dim oStep As DTS.Step

    Dim Mensagem As String = ""

    Dim NumErr As Long

    Dim Descr As String = ""

    Dim Origem As String = ""

     

    'Conectando ao DTS

    dtsp.LoadFromSQLServer( _

    ServerName:= "NomeServidor", _

    ServerUserName:= "Usuario do Banco", _

    ServerPassword:= "senha do usuario", _

    PackageName:= " Nome do pacote DTS ")

     

    'Deletando variaveis globais default do DTS

    For Each gv As Global.DTS.GlobalVariable In dtsp.GlobalVariables

    dtsp.GlobalVariables.Remove(gv.Name)

    Next

     

    'Inserindo variaveis globais default do DTS com valores parametrizados

    dtsp.GlobalVariables.AddGlobalVariable("DtInicial", dtpDataAquis.Text)

    dtsp.GlobalVariables.AddGlobalVariable("DtFinal", dtpDataAquis.Text)

     

    'Abilitando está opção o erro cairá no Catch

    'dtsp.FailOnError() = True

     

    dtsp.Execute()

     

    'Recupera o erro dos steps

    For Each oStep In dtsp.Steps

    If oStep.ExecutionStatus = DTSStepExecStatus.DTSStepExecStat_Completed Then

    If oStep.ExecutionResult = DTSStepExecResult.DTSStepExecResult_Failure Then

    oStep.GetExecutionErrorInfo(NumErr, Origem, Descr)

    Mensagem = Mensagem & vbCrLf & _

    "Step " & oStep.Name & " failed, error: " & _

    sErrorNumConv(NumErr) & vbCrLf & Descr & vbCrLf

    End If

    End If

    Next

     

    If (Mensagem <> "") Then

    'Tratamento de erro

    MessageBox.Show("Erro", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error)

    dtsp.UnInitialize()

    dtsp = Nothing

    Exit Sub

    End If

    dtsp.UnInitialize()

    dtsp = Nothing

     

    MessageBox.Show("Sucesso !!!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information)

     

     

     

    É isso qualquer dúvida é só postar.

     

    []'s

     

    Rafael Krisller

     

     

    terça-feira, 25 de setembro de 2007 12:19
  • Reinaldo,

     

    Você não pode executar esse DTS através de um programa em VB não? Pois nisso eu tenho experiência.

     

    Veja o exemplo:

     

    Primeiramente adicione as referencias:

    Microsoft DTS Custom Tasks Object Library

    Microsoft DTSDataPump Scripting Object Library

    Microsoft DTSPackage Object Library

     

    Code Snippet

     

    Dim dtsp As New DTS.Package2

    Dim oStep As DTS.Step

    Dim Mensagem As String = ""

    Dim NumErr As Long

    Dim Descr As String = ""

    Dim Origem As String = ""

     

    'Conectando ao DTS

    dtsp.LoadFromSQLServer( _

    ServerName:= "NomeServidor", _

    ServerUserName:= "Usuario do Banco", _

    ServerPassword:= "senha do usuario", _

    PackageName:= " Nome do pacote DTS ")

     

    'Deletando variaveis globais default do DTS

    For Each gv As Global.DTS.GlobalVariable In dtsp.GlobalVariables

    dtsp.GlobalVariables.Remove(gv.Name)

    Next

     

    'Inserindo variaveis globais default do DTS com valores parametrizados

    dtsp.GlobalVariables.AddGlobalVariable("DtInicial", dtpDataAquis.Text)

    dtsp.GlobalVariables.AddGlobalVariable("DtFinal", dtpDataAquis.Text)

     

    'Abilitando está opção o erro cairá no Catch

    'dtsp.FailOnError() = True

     

    dtsp.Execute()

     

    'Recupera o erro dos steps

    For Each oStep In dtsp.Steps

    If oStep.ExecutionStatus = DTSStepExecStatus.DTSStepExecStat_Completed Then

    If oStep.ExecutionResult = DTSStepExecResult.DTSStepExecResult_Failure Then

    oStep.GetExecutionErrorInfo(NumErr, Origem, Descr)

    Mensagem = Mensagem & vbCrLf & _

    "Step " & oStep.Name & " failed, error: " & _

    sErrorNumConv(NumErr) & vbCrLf & Descr & vbCrLf

    End If

    End If

    Next

     

    If (Mensagem <> "") Then

    'Tratamento de erro

    MessageBox.Show("Erro", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error)

    dtsp.UnInitialize()

    dtsp = Nothing

    Exit Sub

    End If

    dtsp.UnInitialize()

    dtsp = Nothing

     

    MessageBox.Show("Sucesso !!!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information)

     

     

     

    É isso qualquer dúvida é só postar.

     

    []'s

     

    Rafael Krisller

     

     

    terça-feira, 25 de setembro de 2007 12:19
  • Reinaldo,

     

    Você não pode executar esse DTS através de um programa em VB não? Pois nisso eu tenho experiência.

     

    Veja o exemplo:

     

    Primeiramente adicione as referencias:

    Microsoft DTS Custom Tasks Object Library

    Microsoft DTSDataPump Scripting Object Library

    Microsoft DTSPackage Object Library

     

    Code Snippet

     

    Dim dtsp As New DTS.Package2

    Dim oStep As DTS.Step

    Dim Mensagem As String = ""

    Dim NumErr As Long

    Dim Descr As String = ""

    Dim Origem As String = ""

     

    'Conectando ao DTS

    dtsp.LoadFromSQLServer( _

    ServerName:= "NomeServidor", _

    ServerUserName:= "Usuario do Banco", _

    ServerPassword:= "senha do usuario", _

    PackageName:= " Nome do pacote DTS ")

     

    'Deletando variaveis globais default do DTS

    For Each gv As Global.DTS.GlobalVariable In dtsp.GlobalVariables

    dtsp.GlobalVariables.Remove(gv.Name)

    Next

     

    'Inserindo variaveis globais default do DTS com valores parametrizados

    dtsp.GlobalVariables.AddGlobalVariable("DtInicial", dtpDataAquis.Text)

    dtsp.GlobalVariables.AddGlobalVariable("DtFinal", dtpDataAquis.Text)

     

    'Abilitando está opção o erro cairá no Catch

    'dtsp.FailOnError() = True

     

    dtsp.Execute()

     

    'Recupera o erro dos steps

    For Each oStep In dtsp.Steps

    If oStep.ExecutionStatus = DTSStepExecStatus.DTSStepExecStat_Completed Then

    If oStep.ExecutionResult = DTSStepExecResult.DTSStepExecResult_Failure Then

    oStep.GetExecutionErrorInfo(NumErr, Origem, Descr)

    Mensagem = Mensagem & vbCrLf & _

    "Step " & oStep.Name & " failed, error: " & _

    sErrorNumConv(NumErr) & vbCrLf & Descr & vbCrLf

    End If

    End If

    Next

     

    If (Mensagem <> "") Then

    'Tratamento de erro

    MessageBox.Show("Erro", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error)

    dtsp.UnInitialize()

    dtsp = Nothing

    Exit Sub

    End If

    dtsp.UnInitialize()

    dtsp = Nothing

     

    MessageBox.Show("Sucesso !!!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information)

     

     

     

    É isso qualquer dúvida é só postar.

     

    []'s

     

    Rafael Krisller

     

     

    terça-feira, 25 de setembro de 2007 12:19
  •  Rafael Krisller wrote:

    Reinaldo,

     

    Você não pode executar esse DTS através de um programa em VB não? Pois nisso eu tenho experiência.

     

    Veja o exemplo:

     

    Primeiramente adicione as referencias:

    Microsoft DTS Custom Tasks Object Library

    Microsoft DTSDataPump Scripting Object Library

    Microsoft DTSPackage Object Library

     

    Code Snippet

     

    Dim dtsp As New DTS.Package2

    Dim oStep As DTS.Step

    Dim Mensagem As String = ""

    Dim NumErr As Long

    Dim Descr As String = ""

    Dim Origem As String = ""

     

    'Conectando ao DTS

    dtsp.LoadFromSQLServer( _

    ServerName:= "NomeServidor", _

    ServerUserName:= "Usuario do Banco", _

    ServerPassword:= "senha do usuario", _

    PackageName:= " Nome do pacote DTS ")

     

    'Deletando variaveis globais default do DTS

    For Each gv As Global.DTS.GlobalVariable In dtsp.GlobalVariables

    dtsp.GlobalVariables.Remove(gv.Name)

    Next

     

    'Inserindo variaveis globais default do DTS com valores parametrizados

    dtsp.GlobalVariables.AddGlobalVariable("DtInicial", dtpDataAquis.Text)

    dtsp.GlobalVariables.AddGlobalVariable("DtFinal", dtpDataAquis.Text)

     

    'Abilitando está opção o erro cairá no Catch

    'dtsp.FailOnError() = True

     

    dtsp.Execute()

     

    'Recupera o erro dos steps

    For Each oStep In dtsp.Steps

    If oStep.ExecutionStatus = DTSStepExecStatus.DTSStepExecStat_Completed Then

    If oStep.ExecutionResult = DTSStepExecResult.DTSStepExecResult_Failure Then

    oStep.GetExecutionErrorInfo(NumErr, Origem, Descr)

    Mensagem = Mensagem & vbCrLf & _

    "Step " & oStep.Name & " failed, error: " & _

    sErrorNumConv(NumErr) & vbCrLf & Descr & vbCrLf

    End If

    End If

    Next

     

    If (Mensagem <> "") Then

    'Tratamento de erro

    MessageBox.Show("Erro", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error)

    dtsp.UnInitialize()

    dtsp = Nothing

    Exit Sub

    End If

    dtsp.UnInitialize()

    dtsp = Nothing

     

    MessageBox.Show("Sucesso !!!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information)

     

     

     

    É isso qualquer dúvida é só postar.

     

    []'s

     

    Rafael Krisller

     

     

    Obrigado pela informacao, eu acabei resolvendo o problema instalando alguns componentes de cliente do SQl Server 2005 como por exemplo o Integration Service, e em algumas maquinas tinha um registro no REGedit que precisavam ser habilitados, com isso resolvi.

     

    Muito Obrigado.

    terça-feira, 25 de setembro de 2007 12:25