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

Este artigo ajuda você a resolve 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 de registro do Windows para usuários avançados.

Sintomas

Considere o seguinte cenário:

  • Você tem um computador cliente que se comunica com um computador de servidor.
  • O MS DTC está instalado em ambos os computadores.
  • Uma ou mais das seguintes condições são verdadeiras:
    • Reinicie qualquer um dos computadores.
    • Reinicie 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 alistada no coordenador de transações especificado (0x8004d00a)

Além disso, a primeira transação falha. As transações subsequentes têm êxito 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 alistada no coordenador de transações especificado (0x8004d00e)

Motivo

Esse problema pode ocorrer quando a conexão MS DTC entre o computador cliente e o computador do servidor for 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 do servidor. Quando ocorre uma nova solicitação de transação, o computador cliente deve restabelecer a conexão MS DTC com o computador do servidor.

Quando o computador cliente tenta restabelecer a conexão MS DTC com o computador do servidor, o computador cliente envia um pacote. Em seguida, o computador cliente aguarda uma resposta de pacote de associação do computador do servidor. Por padrão, o computador cliente interromperá a transação se o computador cliente não receber uma resposta do computador do servidor em 4 segundos. A resposta do computador do servidor pode ser atrasada devido a problemas de latência de rede ou atrasos de autenticação. Quando a resposta do computador do 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 Protocolo de Datagrama do Usuário (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).

Resolução

Aviso

Poderão ocorrer sérios problemas se você modificar o Registro incorretamente com 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 a seu próprio risco.

Para ter certeza de que você está 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 propor transação com o nó filho ' ComputerName ' porque a conexão com o gerenciador de transações remota caiu"

Observação

Nesses dados, a palavra propogation é um erro de ortografia para a propagação da palavra. A palavra propogate é um erro de ortografia 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 de dados Valor , digite 60.

    Esse valor aumenta o tempo que o computador cliente aguarda pela resposta do pacote de associação do computador do servidor. Esse valor é o dobro do número de segundos antes que o computador cliente pare 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. Podem ser necessários testes adicionais em sua configuração.

  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 Protocolo de Controle de Transmissão (TCP) 88) estejam abertas quando um firewall estiver envolvido na Rede de Perímetro. As portas UDP 389 e TCP 389 (ambas para LDAP (Protocolo de Acesso ao Diretório Leve) para localizar o Centro de Distribuição de Chaves (KDC)) também devem estar abertas.