Estou trabalhando em um pacote que precisa usar uma transação, mas 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 do pacote
- A propriedade TransactionOption é definida como Obrigatório
- Executando em uma instância 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.
- MSDTC tem as seguintes configurações
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 que executa o pacote, bem como no servidor que mantém a instância. Depois que fiz isso, 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.
Estou faltando alguma coisa nas permissões? Nota: o Allow Remote Clients
também foi verificado.
Eu vi o ping do MSDTC mencionado (inclusive nos comentários abaixo), mas quando olhei para ele, não tenho certeza do que fazer com ele.
Eu resolvi o problema. Eu li em vários lugares que o DTC precisa ser iniciado na máquina de origem e também na máquina de 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:
Sendo a parte importante
The transaction manager has disabled its support for remote/network transactions.
Uma vez lá, fiz pesquisas adicionais e finalmente percebi que não havia configurado meu DTC local para permitir o acesso à rede, etc. Depois de configurá-lo para permitir o acesso ao DTC à rede, permitir conexões remotas e permitir conexões de saída, tudo funcionou sem problemas.
Não tenho certeza se essas são as permissões mínimas necessárias para a conexão local, mas parece ser.