COMO: Resolver pacotes do DTS que são executados em aplicativos do Visual Basic

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 323685
Sumário
Ao executar um pacote do Microsoft SQL Server Data Transformation Services (DTS) de um aplicativo Microsoft Visual Basic, o pacote poderá falhar sem gerar mensagens de erro para ajudar você a solucionar a falha. Este artigo descreve como solucionar problemas de pacotes do DTS que são executados em aplicativos do Visual Basic.

back to the top

Três métodos para executar um pacote DTS a partir do Visual Basic

Existem três métodos básicos para criar, salvar e executar um pacote DTS a partir do Visual Basic. Em cada um dos métodos a seguir, você deve usar uma referência à biblioteca de objetos Microsoft pacote DTS nas referências do projeto do Visual Basic.

back to the top

Método 1

  1. Crie o pacote do DTS Designer.
  2. Salve-o para SQL Server (ou em um arquivo de .dts ou o repositório).
  3. Carregue e execute o pacote (como) a partir do Visual Basic usando código semelhante ao seguinte código:
        Dim pkg as DTS.Package    Set pkg = New DTS.Package    pkg.LoadFromSQLServer "<servername>", "<user id>", "<password>", _        DTSSQLStgFlag_Default, "", "", "", "<package name>"    pkg.Execute					
Se você deseja continuar a editar o pacote do DTS Designer, é preferível usar esse método, porque ele é executado sempre a versão mais recente do pacote.

back to the top

Método 2

  1. Crie o pacote do DTS Designer.
  2. Salve-o em um arquivo de módulo do Visual Basic (. bas).
  3. Incorporar o módulo em um projeto do Visual Basic 6.0 e, em seguida, execute o código.

    Para incorporar o módulo em um projeto do Visual Basic 6.0:
    1. Inicie o Visual Basic 6.0 e crie um novo projecto EXE padrão.
    2. Clique em projeto, referênciase, em seguida, adicione uma referência à biblioteca de objetos Microsoft pacote DTS.
    3. Clique em projeto, clique em Adicionar arquivoe, em seguida, Adicionar módulo. bas que DTS Designer salvas no projeto.
    4. No Project Explorer, clique com botão direito Form1e, em seguida, clique em Remover para tornar Sub Main no módulo. bas DTS o objeto de inicialização para o projeto.
Observação: se você estiver usando o SQL Server 7.0, você deve usar uma ferramenta separada para converter seu pacote DTS em código do Visual Basic.Para obter informações adicionais sobre outra ferramenta e como usá-lo, clique no número abaixo para ler o artigo na Base de dados de Conhecimento Microsoft:
239454 INF: Ferramenta ScriptPkg gera o código de modelo de objeto DTS para ajudar a usar DTS programaticamente
back to the top

Método 3

Código de um novo pacote a partir do zero no Visual Basic e utilizar o modelo de objeto DTS.

back to the top

O pacote DTS é executado na estação de trabalho cliente

Ao executar um pacote DTS de um aplicativo do Visual Basic, execute as etapas do pacote na estação de trabalho cliente e não no computador que está executando o SQL Server. Esse comportamento tem as seguintes implicações:
  • Arquivos: A estação de trabalho cliente deve ter os arquivos redistribuíveis DTS DLLs e suporte. Consulte o arquivo Redist na pasta raiz do CD de instalação do SQL Server para obter uma lista desses arquivos.
  • Permissões: O pacote é executado no contexto de segurança do usuário que inicia o aplicativo Visual Basic. Como resultado, você pode enfrentar problemas de permissão quando o pacote acessa recursos do SQL Server ou externamente, como arquivos de texto ou bancos de dados baseado em arquivo.
back to the top

Recomendações de solução de problemas

Usar o Visual Basic 6.0

Para evitar possíveis problemas entre DTS e COM interoperabilidade do.NET Framework, use Visual Basic 6.0 em vez do Visual Basic .NET para solucionar a execução do pacote.

back to the top

Definir o pacote para falhar quando ocorrem erros

Marca o pacote falha quando ocorre um erro. Para fazer isso:
  • No DTS Designer, clique na guia registro da caixa de diálogo Propriedades do pacote e, em seguida, clique para selecionar o pacote de falha no primeiro erro.

    - ou -
  • No código, defina a propriedade FailOnError do objeto pacote como True. Sem essa configuração de propriedade, nenhum erro é gerado para o aplicativo Visual Basic. (Isso é explicado na documentação dessa propriedade nos Manuais Online do SQL Server).
Observação: essa etapa não é necessária se você implementar eventos de pacote, conforme descrito na seção a seguir, mas talvez você queira tentar essa etapa sozinha primeiro para recuperar uma mensagem de erro.

back to the top

Implementar os eventos de pacote

  • Para recuperar informações de erro adicionais, particularmente quando o erro ocorre na chamada do método Execute , você pode usar o método GetExecutionErrorInfo do objeto etapa . Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de Conhecimento Microsoft:
    240221 COMO: Manipular erros em Data Transformation Services 'Pacote' e 'Depurar' objetos
    No entanto, os eventos do pacote DTS fornecem informações adicionais sobre o andamento do pacote e o evento OnError fornece as mesmas informações que GetExecutionErrorInfo.Para obter informações adicionais sobre como implementar cinco eventos do objeto de pacote e o código de exemplo, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento Microsoft:
    221193 COMO: Instalar manipuladores de eventos do Data Transformation Services (DTS) no Visual Basic
    321525 COMO: Usar eventos de pacote do DTS no Visual Basic .NET
  • A seguir está uma lista dos cinco eventos do objeto Package .

    Observação: você deve declarar WithEvents do seu objeto de pacote e implementar manipuladores para todos os cinco eventos se você implementar qualquer uma delas ou ocorre uma violação de acesso.
    • OnStart
    • OnProgress
    • OnFinish
    • OnError
    • OnQueryCancel
  • O evento OnQueryCancel é acionado periodicamente para que você pode cancelar a execução do pacote. No entanto, em determinadas circunstâncias, a execução do pacote está cancelada inesperadamente e você recebe a mensagem de erro "A execução foi cancelada pelo usuário."Para obter informações adicionais sobre essa mensagem de erro, clique no número abaixo para ler o artigo na Base de dados de Conhecimento Microsoft:
    319058 Erro: Execução do pacote DTS está cancelada inesperadamente em um aplicativo do Visual Basic
  • Problemas de threads são a causa mais comum de violação de acesso quando você executa pacotes do DTS em aplicativos do Visual Basic. Especialmente quando você implementar eventos de pacote , é extremamente útil especificar que todas as etapas do pacote executar no thread principal do pacote. Para especificar isso, siga estas etapas para cada tarefa:
    • No DTS Designer, na caixa de diálogo Propriedades de fluxo de trabalho da tarefa, clique na guia Opções e, em seguida, clique para selecionar executar no thread principal do pacote.

      - ou -
    • No seu código, defina a propriedade ExecuteInMainThread de cada etapa como True:
          Dim intStepCount As Integer    For intStepCount = 1 To pkg.Steps.Count        pkg.Steps(intStepCount).ExecuteInMainThread = True    Next intStepCount						
    Para obter informações adicionais sobre problemas de threading e o DTS, clique no número abaixo para ler o artigo na Base de dados de Conhecimento Microsoft:
    318819 PRB: Um pacote DTS gera exceções ou pára de responder quando você o executa como um trabalho agendado
  • Depois de concluir essas etapas, seu código do Visual Basic 6.0 deve ser semelhante ao seguinte código, que imprime informações de cada evento de pacote para a janela Verificação imediata:
    Option ExplicitDim WithEvents pkg As DTS.Package2Private Sub Command1_Click()        'Declare variables    Dim intStepCount As Integer    Dim s As Integer        'Load package    Set pkg = New DTS.Package2    pkg.LoadFromSQLServer "<server>", "<user id>", "<password>", _        DTSSQLStgFlag_Default, Empty, Empty, Empty, "<package>", Nothing        'Avoid threading issues    intStepCount = pkg.Steps.Count    For s = 1 To intStepCount        pkg.Steps(s).ExecuteInMainThread = True    Next s        'Execute package    pkg.Execute        'Clean up    pkg.UnInitialize    Set pkg = Nothing    End SubPrivate Sub pkg_OnError(ByVal EventSource As String, ByVal ErrorCode As Long, _        ByVal Source As String, ByVal Description As String, _        ByVal HelpFile As String, ByVal HelpContext As Long, _        ByVal IDofInterfaceWithError As String, pbCancel As Boolean)    Debug.Print "ONERROR event from " & EventSource & vbCrLf & _        " error code: " & CStr(ErrorCode) & vbCrLf & _        " source: " & Source & vbCrLf & _        " description: " & DescriptionEnd SubPrivate Sub pkg_OnFinish(ByVal EventSource As String)    Debug.Print "ONFINISH event from " & EventSourceEnd SubPrivate Sub pkg_OnProgress(ByVal EventSource As String, _        ByVal ProgressDescription As String, _        ByVal PercentComplete As Long, ByVal ProgressCountLow As Long, _        ByVal ProgressCountHigh As Long)    Debug.Print "ONPROGRESS event from " & EventSource & " - " & ProgressDescriptionEnd SubPrivate Sub pkg_OnQueryCancel(ByVal EventSource As String, pbCancel As Boolean)    Debug.Print "ONQUERYCANCEL event from " & EventSource & vbCrLf & _        " value of pbcancel is " & pbCancel    'Avoid unexpected cancellation of package - see Q319058    'Note that "If pbCancel = True" does not work    If pbCancel Then        pbCancel = False        Debug.Print "pbCancel reset from True to False"    End IfEnd SubPrivate Sub pkg_OnStart(ByVal EventSource As String)    Debug.Print "ONSTART event from " & EventSourceEnd Sub					
back to the top
Referências

Geral

Para obter informações adicionais sobre como executar pacotes DTS a partir do Visual Basic, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento Microsoft:
242391 INF: Desenvolvimento de pacote DTS, implantação e desempenho
315661 COMO: Executar um pacote de serviços de transformação de dados do SQL Server a partir do Visual Basic
252987 INF: Executar um pacote DTS do SQL Server a partir do Active Server Pages

Pacotes de gravação

Para obter informações adicionais sobre como salvar pacotes, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento Microsoft:
293223 CORREÇÃO: Problemas salvando pacotes DTS em arquivos do Visual Basic
293164 PRB: Erros podem ocorrer quando você usar o SQL Server 2000 para salvar um pacote DTS como um arquivo Visual Basic
300192 Erro: O Assistente de importação/exportação DTS ou TransferObjectsTask falhar manter as configurações de grupo de arquivos de objetos transferidos

Eventos e manipulação de erros

Para obter informações adicionais sobre o tratamento de erros e eventos, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento Microsoft:
251229 CORREÇÃO: GetExecutionErrorInfo e evento OnError podem não retornar todos os erros
271889 PRB: Mensagem de erro: ' violação de acesso de exceção 2147221499. Preciso executar o objeto para realizar esta operação ' ocorre ao executar um pacote DTS no código do Microsoft Visual Basic

Problemas conhecidos

Para obter informações adicionais sobre problemas conhecidos, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento Microsoft:
320304 PRB: Um pacote DTS que você salva como um arquivo Visual Basic pode falhar ao importar dados de texto delimitado por tabulação
319048 PRB: Não é possível usar os manipuladores de eventos de serviços de transformação de dados em Visual Basic com executar tarefa de pacote
299354 PRB: DTS executar pacote poderá falhar ao executar o pacote filho
316331 CORREÇÃO: DTSTransferObjects com eventos gera uma mensagem de erro e uma violação de acesso no Visual Basic
back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 323685 - Última Revisão: 06/21/2015 03:46:00 - Revisão: 6.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 64-bit Edition, Microsoft SQL Server 7.0 Standard Edition

  • kbhowtomaster kbmt KB323685 KbMtpt
Comentários