Erro ao executar uma transação distribuída (DTC) via Linked Server!


Olá pessoal! 

Desta vez vou falar de um problema envolvendo Linked Server e o MS DTC.
 
Recentemente tive que verificar um ambiente com Windows Server 2003 x86 + SQL Server 2000 instalados onde qualquer tipo de transação distribuída que tentasse ser executada via Linked Server para outro servidor com um Windows Server 2008 x64 + SQL Server 2008 R2 falhava com a seguinte mensagem de erro:

Server: Msg 7391, Level 16, State 1, Line 1
The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to start a distributed transaction.
[OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator. ]
OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].

Encontrei na internet um KB oficial da Microsoft falando sobre o caso:


No KB, a solução aplicada é habilitar alguns parâmetros na configuração do DTC local na parte de segurança, na máquina de origem a configuração estava OK contudo na máquina de destino nada estava configurado, isto não foi esquecimento de alguém, ocorre que a partir do Windows Server 2008 estas configurações realmente passaram a vir desta forma por padrão, conforme figura abaixo:
 
Fiz então as alterações conforme o KB e ficou da seguinte forma:
Após aplicar as alterações o serviço do MS DTC reiniciou automaticamente, testei novamente minha transação distribuída dentro do SQL Server e obtive êxito!

É isso pessoal, espero que tenha sido útil! Um abraço!

Nenhum comentário:

Postar um comentário