Problema ao criar uma transação em um pacote SSIS


12

Estou trabalhando em um pacote que precisa usar uma transação, mas atualmente estou recebendo o seguinte erro:

SSIS package "CATS-Package.dtsx" starting.
Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning.
Information: 0x4001100A at CATS-Package: Starting distributed transaction for this container.
Error: 0xC001401A at CATS-Package: The SSIS Runtime has failed to start the distributed transaction due to error 0x8004D01B "The Transaction Manager is not available.". The DTC transaction failed to start. This could occur because the MSDTC Service is not running.
SSIS package "CATS-Package.dtsx" finished: Failure.

Aqui está o que eu sei até agora:

  • Pacote 2012
  • Estou executando na implantação de pacotes
  • A propriedade TransactionOption está definida como Necessário
  • Executando contra uma instância do 2008 R2
  • Posso criar uma transação distribuída manualmente na instância e de acordo com o visualizador de eventos que o MSDTC está executando.
  • O MSDTC possui as seguintes configurações

insira a descrição da imagem aqui

Alguém pode apontar em uma direção para encontrar informações adicionais.

Edit: Uma das etapas que li disse para executar o DTC na máquina local executando o pacote, bem como no servidor que contém a instância. Depois disso, recebi um novo erro:

Information: 0x4001100A at CATS-Package: Starting distributed transaction for this container.
Error: 0xC001402C at CATS-Package, Connection manager "connectionName": The SSIS Runtime has failed to enlist the OLE DB connection in a distributed transaction with error 0x8004D024 "The transaction manager has disabled its support for remote/network transactions.".
Error: 0xC0202009 at CATS-Package, Connection manager "connectionName": SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x8004D024.
Error: 0xC00291EC at Execute SQL Task - Max Product ID, Execute SQL Task: Failed to acquire connection "connectionName". Connection may not be configured correctly or you may not have the right permissions on this connection.

Sendo a parte importante, The transaction manager has disabled its support for remote/network transactions. estou perdendo algo nas permissões? Nota: o Allow Remote Clientstambém foi verificado.

Eu já vi o ping do MSDTC mencionado (inclusive nos comentários abaixo), mas, quando olhei para ele, não sei ao certo o que fazer com ele.


1
Foram encontradas informações mais detalhadas que realmente mostram algumas etapas de solução de problemas para DTC e SSIS: richardlees.blogspot.com/2010/01/…

1
Qual método você está usando para definir sua transação no pacote SSIS?
Zane

1
Verifique se há erros no log de eventos do aplicativo no msdtc, obtenha o ping do MSDTC support.microsoft.com/en-us/kb/918331
Spörri

@ Spörri Não vi nada no log de eventos no cliente ou servidor. Eu olhei para o MSDTC, mas ele parece (à primeira vista) acima da minha cabeça.
Kenneth Fisher

1
@KennethFisher Eu quis dizer apenas servername no teste do PowerShell, se você tiver informações de volta, então o RPC está aberto.
Bob Klimes

Respostas:


10

Eu resolvi o problema. Eu tinha lido em vários lugares que o DTC precisa ser iniciado na máquina de origem e no destino. Portanto, em meu lugar, minha estação de trabalho e o servidor em que a instância está.

Depois de ativar o MSDTC, recebi um novo erro:

Information: 0x4001100A at CATS-Package: Starting distributed transaction for this container.
Error: 0xC001402C at CATS-Package, Connection manager "connectionName": The SSIS Runtime has failed to enlist the OLE DB connection in a distributed transaction with error 0x8004D024 "The transaction manager has disabled its support for remote/network transactions.".
Error: 0xC0202009 at CATS-Package, Connection manager "connectionName": SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x8004D024.
Error: 0xC00291EC at Execute SQL Task - Max Product ID, Execute SQL Task: Failed to acquire connection "connectionName". Connection may not be configured correctly or you may not have the right permissions on this connection.

Com a parte importante sendo The transaction manager has disabled its support for remote/network transactions.

Uma vez lá, fiz uma pesquisa adicional e finalmente percebi que não havia configurado meu DTC local para permitir o acesso à rede, etc. Depois que eu o configurei para permitir o acesso ao DTC de rede, permitir conexões remotas e permitir conexões de saída tudo funcionou sem problemas.

insira a descrição da imagem aqui

Não tenho certeza se essas são as permissões mínimas necessárias para a conexão local, mas parece ser.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.