Você pode receber uma mensagem de erro 7391 no SQL Server 2000 quando você executa uma transação distribuída em um servidor vinculado após a instalação Windows Server 2003 ou Windows XP Service Pack 2

Traduções deste artigo Traduções deste artigo
ID do artigo: 839279 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando você executa uma transação distribuída em uma instância do SQL Server, poderá receber uma mensagem de erro semelhante à seguinte:

Servidor: Mensagem 7391, nível 16, estado 1, linha 1
A operação não pôde ser executada porque o provedor de banco de dados OLE 'SQLOLEDB' não pôde iniciar uma transação distribuída. [Provedor OLE/DB retornado mensagem: nova transação não pode se inscrever no coordenador de transação especificada.] Rastreamento de erro de OLE [provedor OLE/DB 'SQLOLEDB' ITransactionJoin::JoinTransaction retornado 0x8004d00a].


Esse problema pode ocorrer quando uma das seguintes condições for verdadeira:
  • Microsoft Windows Server 2003 ou Microsoft Windows XP Service Pack 2 (SP2) está instalado no computador que inicia a transação distribuída.
  • Microsoft Windows Server 2003 ou Microsoft Windows XP SP2 é instalado no computador remoto que esteja executando o Microsoft SQL Server 2000 e esse computador está vinculado ao computador que inicia a transação distribuída.

Causa

Esse problema ocorre devido a um ou mais dos seguintes motivos:
  • Microsoft Distributed Transaction Coordinator (MSDTC) está desabilitado para as transações de rede.
  • Firewall do Windows é habilitado no computador. Por padrão, ele bloqueia o Microsoft Distributed Transaction Coordinator (MSDTC) de programa.

    Observação Esse problema pode ocorrer mesmo quando Windows Firewall está desativado.

Como Contornar

importante Esta seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, sérios problemas poderão ocorrer se você modificar o registro incorretamente. Por isso, certifique-se que você execute essas etapas cuidadosamente. Para proteção adicional, fazer backup do registro antes de modificá-lo. Em seguida, você pode restaurar o registro se ocorrer um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
322756Como fazer backup e restaurar o registro no Windows


Para contornar esse problema, execute estas etapas no Windows Server 2003 ou Windows XP SP2 instalado no computador:
  1. Verifique se a conta Fazer logon como para o serviço MSDTC é a conta do Serviço de rede . Para fazer isso, execute as seguintes etapas:
    1. Clique em Iniciar e, em seguida, clique em Executar .
    2. Na caixa de diálogo Executar , digite Services.msc e clique em OK .
    3. Na janela serviços , localize o serviço Coordenador de transações distribuídas em nome no painel à direita.
    4. Na coluna Fazer logon como , veja se a conta Fazer logon como é Serviço de rede ou Sistema Local .

      Se a conta Fazer logon como Serviço de rede , vá para a etapa 2. Se a conta Fazer logon como conta do Sistema Local , continue com essas etapas.
    5. Clique em Iniciar e, em seguida, clique em Executar .
    6. Na caixa de diálogo Executar , digite cmd e, em seguida, clique em OK .
    7. No prompt de comando, digite net stop msdtc para interromper o serviço MSDTC.
    8. No prompt de comando, digite Msdtc ?uninstall para remover o MSDTC.
    9. No prompt de comando, digite regedit para abrir o Editor do Registro.
    10. No Editor do Registro, localize a seguinte chave:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
      chave do Registro.

      Exclua essa chave.
    11. Feche o Editor do Registro.
    12. No prompt de comando, digite Msdtc ?install para instalar o MSDTC.
    13. No prompt de comando, digite net start msdtc iniciar o serviço MSDTC.

      Observe que a conta Fazer logon como para o serviço MSDTC é definida para Serviço de rede conta.
  2. Habilite o MSDTC permitir que a transação de rede. Para fazer isso, execute as seguintes etapas:
    1. Clique em Iniciar e, em seguida, clique em Executar .
    2. Na caixa de diálogo Executar , digite dcomcnfg.exe e, em seguida, clique em OK .
    3. Na janela de Serviços de componente , expanda Serviços de componente , expanda computadores e, em seguida, expanda Meu computador .
    4. Clique com o botão direito do mouse Meu computador e, em seguida, clique em Propriedades .
    5. Na caixa de diálogo Propriedades de Meu computador , clique em Configuração de segurança na guia MSDTC .
    6. Na caixa de diálogo Configuração de segurança , clique para selecionar a caixa de seleção Acesso DTC de rede .
    7. Para permitir que a transação distribuída seja executada neste computador a partir de um computador remoto, clique para selecionar a caixa de seleção Permitir entrada .
    8. Para permitir que a transação distribuída seja executada em um computador remoto deste computador, clique para selecionar Permitir saída caixa de seleção.
    9. No grupo Comunicação de Gerenciador de transações , clique para selecionar a opção Sem autenticação necessária . Definir a Não autenticação necessária no cliente e sistemas remotos.
    10. Na caixa de diálogo Configuração de segurança , clique em OK .
    11. Na caixa de diálogo Propriedades de Meu computador , clique em OK .
  3. Configure o Firewall do Windows para incluir o programa MSDTC e a porta 135 como uma exceção. Para fazer isso, execute as seguintes etapas:
    1. Clique em Iniciar e, em seguida, clique em Executar .
    2. Na caixa de diálogo Executar , digite firewall.cpl e, em seguida, clique em OK
    3. No Painel de controle , clique duas vezes em Firewall do Windows .
    4. Na caixa de diálogo Firewall do Windows , clique em Adicionar programa na guia exceções .
    5. Na caixa de diálogo Adicionar um programa , clique no botão Procurar e localize o arquivo MSDTC.exe. Por padrão, o arquivo é armazenado na < unidade de Instalação >: \Windows\System32 pasta.
    6. Na caixa de diálogo Adicionar um programa , clique em OK .
    7. Na caixa de diálogo Firewall do Windows , clique para selecionar a opção msdtc na lista programas e serviços .
    8. Clique em Adicionar porta na guia exceções .
    9. Na caixa de diálogo Adicionar uma porta , digite 135 na caixa de texto número da porta e, em seguida, clique para selecionar a opção TCP .
    10. Na caixa de diálogo Adicionar uma porta , digite um nome para a exceção na caixa de texto nome e, em seguida, clique em OK .
    11. Na caixa de diálogo Firewall do Windows , selecione o nome que você usou para a exceção na Etapa j na lista programas e serviços e, em seguida, clique em OK .
  4. Teste de ping do servidor host para o servidor remoto e do servidor remoto para o servidor host, usando o nome de netbios (nome do servidor, sem o domínio). Microsoft Distributed Transaction Coordinator usa o nome netbios, não o nome de domínio totalmente qualificado, para localizar servidores. Se a resolução de nome falhar, transações distribuídas falhará. Se falhar pings usando o nome netbios, consulte o seguinte artigo da base de dados de Conhecimento:
    172218Ordem de resolução de nomes de host do Microsoft TCP/IP

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Mais Informações

Etapas para reproduzir o comportamento

  1. Efetuar logon um computador com Windows Server 2003 ou Windows XP SP2 instalado.
  2. Início Query Analyzer.
  3. Adicione um computador remoto que está executando o Microsoft SQL Server 2000 como um servidor vinculado. Para fazer isso, execute a seguinte instrução Transact-SQL no Query Analyzer:
    EXEC sp_addlinkedserver  '<remote_server>',  N'SQL SERVER'
    GO

    Observação Substitua remote_server pelo nome do computador que deve ser configurado como servidor vinculado.
  4. Execute uma transação distribuída entre este computador e o computador remoto. Para fazer isso, execute a seguinte instrução Transact-SQL no Query Analyzer:
    SET xact_abort ON 
    GO
    USE  pubs
    GO
    BEGIN DISTRIBUTED TRANSACTION
    SELECT  *  FROM <remote_server>.pubs.dbo.authors
    COMMIT TRAN
    GO
    
    Você receberá a mensagem de erro mencionada na seção "Sintomas".

Referências

Para obter mais informações sobre como configurar o Windows XP Service Pack 2 para uso com o SQL Server 2000, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
841249Como configurar o Windows XP Service Pack 2 para uso com o SQL Server

Propriedades

ID do artigo: 839279 - Última revisão: terça-feira, 25 de agosto de 2009 - Revisão: 4.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft Windows XP Embedded
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
Palavras-chave: 
kbmt kbregistry kberrmsg kbdtc kbdomain kbauthentication kbtransaction kbrpc kbprb KB839279 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 839279

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com