A nova transação não pode se inscrever no coordenador de transações especificado quando você tenta iniciar uma transação no MS DTC

Este artigo ajuda você a resolver um problema ao iniciar uma transação no MS DTC (Coordenador de Transações Distribuídas da Microsoft).

Versão original do produto: Windows
Número original do KB: 922430

Importante

Este artigo contém informações sobre como modificar o Registro. Faça backup do Registro antes de modificá-lo. Você deve saber como restaurar o Registro caso ocorra algum problema. Para obter mais informações sobre como fazer backup, restaurar e modificar o Registro, consulte Informações do Registro do Windows para usuários avançados.

Sintomas

Considere o cenário a seguir.

  • Você tem um computador cliente que se comunica com um computador servidor.
  • O MS DTC está instalado em ambos os computadores.
  • Uma ou mais das seguintes condições são verdadeiras:
    • Você reinicia um dos computadores.
    • Você reinicia o MS DTC em qualquer um dos computadores.
    • Os computadores estão em domínios diferentes.

Nesse cenário, você recebe a seguinte mensagem de erro ao tentar iniciar uma transação no MS DTC:

A nova transação não pode ser inscrita no coordenador de transações especificado (0x8004d00a)

Além disso, a primeira transação falha. As transações subsequentes são bem-sucedidas por um tempo. No entanto, as transações subsequentes podem falhar novamente. Se as transações subsequentes falharem, você receberá a seguinte mensagem de erro:

A nova transação não pode ser inscrita no coordenador de transações especificado (0x8004d00e)

Causa

Esse problema pode ocorrer quando a conexão MS DTC entre o computador cliente e o computador servidor é fechada. Por exemplo, um tempo limite ocioso, um tempo limite de chamada de procedimento remoto (RPC) ou o firewall podem fechar a conexão MS DTC entre o computador cliente e o computador servidor. Quando ocorre uma nova solicitação de transação, o computador cliente deve restabelecer a conexão do MS DTC com o computador servidor.

Quando o computador cliente tenta restabelecer a conexão do MS DTC com o computador servidor, o computador cliente envia um pacote. Em seguida, o computador cliente aguarda uma resposta de pacote de ligação do computador servidor. Por padrão, o computador cliente interrompe a transação se o computador cliente não receber uma resposta do computador servidor em 4 segundos. A resposta do computador servidor pode ser atrasada devido a problemas de latência de rede ou atrasos de autenticação. Quando a resposta do computador servidor finalmente chega ao computador cliente, as transações subsequentes são bem-sucedidas.

A primeira transação pode levar muito tempo e, em seguida, uma solicitação posterior para fazer uma transação distribuída pode ser concluída imediatamente. Esse problema pode ocorrer quando o lado do cliente do MS DTC tem um problema de comunicação com o servidor Kerberos (KDC). Normalmente, esse problema ocorre se o cliente e o servidor estiverem em domínios diferentes que tenham um firewall entre eles.

Por exemplo, esse problema ocorre no seguinte cenário:

  • O serviço Web está na rede de perímetro em um domínio. O serviço Web precisa usar transações com um servidor de banco de dados em outro domínio em uma intranet.
  • Um firewall está entre a rede de perímetro e a intranet. O atraso excessivo na primeira transação ocorre porque a porta 88 (Kerberos) do User Datagram Protocol (UDP) está bloqueada.
  • A repetição e o intervalo de repetição para a solicitação Kerberos são iguais a um atraso excessivo (mais de 100 segundos).

Solução

Aviso

Poderão ocorrer problemas sérios se você modificar o Registro incorretamente usando o Editor do Registro ou outro método. Esses problemas podem exigir a reinstalação do sistema operacional. A Microsoft não pode garantir que esses problemas possam ser resolvidos. Modifique o Registro por conta própria.

Para garantir que você esteja enfrentando o problema descrito neste artigo, confirme se o arquivo de log de rastreamento de transações do MS DTC contém os seguintes dados:

; eventid=TRANSACTION_PROPOGATION_FAILED_CONNECTION_DOWN_FROM_REMOTE_TM ; tx_guid=f11cd9c9-7b8a-41e3-a904-4840123bacf7 ;" falha ao propagar a transação para o nó filho ' ComputerName ' porque a conexão com o gerenciador de transações remoto caiu"

Observação

Nesses dados, a palavra propagação é um erro ortográfico para a palavra propagação. A palavra propogate é um erro ortográfico para a palavra propagar.

Se o arquivo de log de rastreamento de transações do MS DTC contiver esses dados, siga estas etapas:

  1. Selecione Iniciar e Executar, digite regedit e selecione OK.

  2. Localize a seguinte subchave do Registro:
    HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC

  3. Clique com o botão direito do mouse em MSDTC, aponte para Novo e selecione Valor DWORD.

  4. Digite CmMaxNumberBindRetries e pressione ENTER.

  5. Clique com o botão direito do mouse em CmMaxNumberBindRetries e selecione Modificar.

  6. Selecione Decimal.

  7. Na caixa Dados do valor, digite 60.

    Esse valor aumenta o tempo que o computador cliente aguarda a resposta do pacote de ligação do computador servidor. Esse valor é o dobro do número de segundos antes que o computador cliente interrompa a transação se o computador cliente não receber a resposta do pacote de associação. Por exemplo, um valor de 60 é igual a 30 segundos. O valor de 60 é apenas um valor recomendado. Testes adicionais em sua configuração podem ser necessários.

  8. Selecione OK.

  9. Reinicie o MS DTC.

Observação

Para o cenário de resposta lenta, certifique-se de que as portas exigidas pela autenticação Kerberos (UDP 88 e TCP (Transmission Control Protocol) 88) estejam abertas quando um firewall estiver envolvido na rede de perímetro. As portas UDP 389 e TCP 389 (ambas para LDAP (Lightweight Directory Access Protocol) para localizar o KDC (Centro de Distribuição de Chaves)) também devem estar abertas.