Poderá receber uma mensagem de erro 7391 no SQL Server 2000 quando executa uma transacção distribuída num servidor ligado depois de instalar o Windows Server 2003 ou Windows XP Service Pack 2

Traduções de Artigos Traduções de Artigos
Artigo: 839279 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

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

Servidor: Erro 7391, nível de 16, estado 1, linha 1
Não foi possível executar a operação porque o fornecedor de OLE DB 'SQLOLEDB' não conseguiu iniciar uma transacção distribuída. [Fornecedor OLE/DB devolvida a mensagem: nova transacção não é possível efectuar a inscrição no coordenador de transacções especificado.] Rastreio de erro de OLE DB [fornecedor de OLE/DB 'SQLOLEDB' ITransactionJoin::JoinTransaction devolvido 0x8004d00a].


Este problema poderá 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 transacção distribuída.
  • Microsoft Windows Server 2003 ou Microsoft Windows XP SP2 é instalado no computador remoto com o Microsoft SQL Server 2000 em execução e esse computador está ligado ao computador que inicia a transacção distribuída.

Causa

Este problema ocorre devido a um ou mais das seguintes razões:
  • Coordenador de transacções distribuídas da Microsoft (MSDTC) está desactivada para transacções de rede.
  • Firewall do Windows está activado no computador. Por predefinição, o Firewall do Windows bloqueia o Microsoft Distributed Transaction Coordinator (MSDTC) programa.

    Nota Este problema pode ocorrer mesmo quando Windows Firewall está desactivado.

Como contornar

importante Esta secção, método ou tarefa contém passos que indicam como modificar o registo. No entanto, poderão ocorrer problemas graves se modificar o registo de forma incorrecta. Por conseguinte, certifique-se de que segue estes passos cuidadosamente. Criar uma para protecção adicional, cópia de segurança do registo antes de o modificar. Em seguida, pode restaurar o registo se ocorrer um problema. Para obter mais informações sobre como efectuar uma cópia de segurança e restaurar o registo, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
322756Como efectuar uma cópia de segurança e restaurar o registo no Windows


Para contornar este problema, siga estes passos no computador que o Windows Server 2003 ou Windows XP SP2 está instalado:
  1. Certifique-se a conta Iniciar sessão como para o serviço MSDTC está a conta do Serviço de rede . Para o fazer, siga estes passos:
    1. Clique em Iniciar e, em seguida, clique em Executar .
    2. Na caixa de diálogo Executar , escreva Services.msc e, em seguida, clique em OK .
    3. Na janela Serviços , localize o serviço Coordenador de transacções distribuídas em nome no painel da direita.
    4. Na coluna Log On As , ver se a conta Iniciar sessão como é Serviço de rede ou Sistema Local .

      Se a conta Iniciar sessão como Serviço de rede , avance para o passo 2. Se a conta Iniciar sessão como conta Sistema Local , continue com estes passos.
    5. Clique em Iniciar e, em seguida, clique em Executar .
    6. Na caixa de diálogo Executar , escreva cmd e, em seguida, clique em OK .
    7. Na linha de comandos, escreva net stop msdtc para parar o serviço MSDTC.
    8. Na linha de comandos, escreva Msdtc ?uninstall para remover o MSDTC.
    9. Na linha de comandos, escreva regedit para abrir o Editor de registo.
    10. No Editor de registo, localize a seguinte chave:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
      chave do registo.

      Elimine esta chave.
    11. Saia do Editor de registo.
    12. Na linha de comandos, escreva MSDTC ?install para instalar o MSDTC.
    13. Na linha de comandos, escreva net start msdtc iniciar o serviço MSDTC.

      Note que a conta Iniciar sessão como para o serviço MSDTC está definida como Serviço de rede conta.
  2. Active o MSDTC permitir que a transacção de rede. Para o fazer, siga estes passos:
    1. Clique em Iniciar e, em seguida, clique em Executar .
    2. Na caixa de diálogo Executar , escreva dcomcnfg.exe e, em seguida, clique em OK .
    3. Na janela Serviços de componentes , expanda Serviços componentes , expanda computadores e, em seguida, expanda o Meu computador .
    4. Clique com o botão direito do rato em Meu computador e, em seguida, clique em Propriedades .
    5. Na caixa de diálogo Os meus propriedades do computador , clique em Configuração de segurança no separador MSDTC .
    6. Na caixa de diálogo Configuração de segurança , clique para seleccionar a caixa de verificação de Acesso ao DTC na rede .
    7. Para permitir que a transacção distribuída executar este computador a partir de um computador remoto, clique para seleccionar a caixa de verificação Permitir entrada .
    8. Para permitir que a transacção distribuída executar num computador remoto a partir deste computador, clique para seleccionar Permitir saída seleccione caixa.
    9. Em grupo de Comunicação do Gestor de transacções , clique para seleccionar a opção Não é necessário autenticação . Definir Sem autenticação necessário o cliente e sistemas remotos.
    10. Na caixa de diálogo Configuração de segurança , clique em OK .
    11. Na caixa de diálogo Os meus propriedades do computador , clique em OK .
  3. Configurar Firewall do Windows para incluir o programa MSDTC e para incluir a porta 135 como uma excepção. Para o fazer, siga estes passos:
    1. Clique em Iniciar e, em seguida, clique em Executar .
    2. Na caixa de diálogo Executar , escreva firewall.cpl e, em seguida, clique em OK
    3. No Painel de controlo , faça duplo clique em Firewall do Windows .
    4. Na caixa de diálogo Firewall do Windows , clique em Adicionar programa no separador excepções .
    5. Na caixa de diálogo Adicionar um programa , clique no botão Procurar e, em seguida, localize o ficheiro MSDTC.exe. Por predefinição, o ficheiro é armazenado na < Instalação unidade >: \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 seleccionar a opção de msdtc na lista programas e serviços .
    8. Clique em Adicionar porta no separador excepções .
    9. Na caixa de diálogo Adicionar uma porta , escreva 135 na caixa de texto número da porta e, em seguida, clique em para seleccionar a opção TCP .
    10. Na caixa de diálogo Adicionar uma porta , escreva um nome para a excepção na caixa de texto Nome e, em seguida, clique em OK .
    11. Na caixa de diálogo Firewall do Windows , seleccione o nome que utilizou para a excepção no passo j lista de programas e serviços e, em seguida, clique em OK .
  4. Teste ping do servidor anfitrião para o servidor remoto e do servidor remoto no servidor anfitrião, utilizando o nome de netbios (sem o domínio, nome do servidor). Coordenador de transacções distribuídas da Microsoft utiliza o nome de netbios e não o nome de domínio totalmente qualificado, para localizar servidores. Se a resolução de nomes falhar, transacções distribuídas falhará. Se falhar a pings utilizando o nome de netbios, consulte o seguinte artigo da base de dados de conhecimento:
    172218Microsoft TCP/IP Host nome resolução encomenda

Ponto Da Situação

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

Mais Informação

Passos para reproduzir o comportamento

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

    Nota Substitua o nome do computador que tem de ser configurado como o servidor ligado remote_server.
  4. Executa uma transacção distribuída entre este computador e o computador remoto. Para efectuar este procedimento, execute a seguinte instrução Transact-SQL no analisador de consultas:
    SET xact_abort ON 
    GO
    USE  pubs
    GO
    BEGIN DISTRIBUTED TRANSACTION
    SELECT  *  FROM <remote_server>.pubs.dbo.authors
    COMMIT TRAN
    GO
    
    Poderá receber a mensagem de erro mencionada na secção "Sintomas".

Referências

Para obter mais informações sobre como configurar Windows XP Service Pack 2 para utilização com o SQL Server 2000, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
841249Como configurar o Windows XP Service Pack 2 para utilização com o SQL Server

Propriedades

Artigo: 839279 - Última revisão: 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
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003 Enterprise Edition
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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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