Como solucionar problemas de erro 7391 que ocorre quando você usa um servidor vinculado no SQL Server

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: 306212
Sumário
Este artigo é que um guia básico para a solução de problemas vinculado servidor erro 7391. O artigo contém diretrizes e instruções para determinar a causa e a resolução para esse erro. No entanto, isso não é uma lista completa e alguns problemas podem ser específicos ao seu ambiente.
Mais Informações
Você pode receber erro 7391 enquanto estiver trabalhando com servidores vinculados.

No Microsoft SQL Server 2005, você receber a seguinte mensagem de erro:

Servidor: Mensagem 7391, nível 16, estado 1, linha 1
A operação não pôde ser executada porque o provedor do OLE DB "% ls" para o servidor vinculado "% ls" não pôde iniciar uma transação distribuída.

No SQL Server 2000, a mensagem de erro que é exibida é:

Servidor: Mensagem 7391, nível 16, estado 1, <objectname>, linha xx
A operação não pôde ser executada porque o provedor OLE DB '% 1!' não pôde
Iniciar uma transação distribuída.

No SQL Server 7.0, a mensagem de erro que é exibida é:

Servidor: Mensagem 7391, nível 16, estado 1, linha 1 A operação não pôde ser executada porque
o provedor do OLE DB '% 1!' não oferece suporte a transações distribuídas. Provedor do OLE/DB [
retornou mensagem: erro de transação distribuída]

Em alguns casos, você também pode receber o seguinte erro 8522:
Transação distribuída anulada por MSDTC.


Todos os números de erro que estão no intervalo de 7300 para 7399 indicam um problema com o provedor. Por padrão, porque cada provedor pode ter recursos diferentes e retornar detalhes diferentes, você não recebe a mensagem de erro completa. Para recuperar a mensagem de erro completa de provedores, emita este comando antes de executar a consulta que resulta no erro:
DBCC TRACEON (3604, 7300)

Se você receber a mensagem de erro 7391 de um processo, como replicação ou DTS (Data Transformation Services), você também pode receber a mensagem de erro quando o código contém uma instrução BEGIN TRAN DISTRIBUÍDOS.

Certifique-se de que você teste o código que tem a instrução BEGIN TRAN distribuído no Query Analyzer.
Iniciar o Query Analyzer e execute essa instrução fazendo logon para o servidor com a mesma conta como o SQL Server e o SQL Server Agent conta de inicialização. Isso ajudará a estreitar seu escopo de solução de problemas.

Resoluções comuns

Aqui está uma lista das resoluções de mais comuns para erro 7391.

Observação É uma boa idéia para limitar o código em uma transação que envolve uma consulta distribuída apenas para o servidor remoto. Na maioria dos casos, você pode separar as etapas executadas localmente das etapas remotas para alcançar esse objetivo.

Observação Se você estiver usando o SQL Server 2005, use SQL Server Management Studio em vez de Query Analyzer e Enterprise Manager para executar a operação mencionada neste artigo. Observe que algumas interfaces de usuário no SQL Server Management Studio podem ser diferentes das interfaces de usuário no Query Analyzer ou no Enterprise Manager. Consulte o tópico relacionado nos manuais online do SQL Server 2005 e fazer a alteração correspondente para a operação.

problemas de suporte
  • Contato o fornecedor do driver que você use em sua consulta de servidor vinculado para ver ou não o driver oferece suporte de transações distribuídas.
  • Verifique se o objeto no servidor de destino refere-se novamente para o primeiro servidor. Este é o que é conhecido como uma situação de auto-retorno. Isso não tem suporte, conforme documentado no SQL Server Books Online. Para obter mais informações, visite o seguinte site:

    Loopback Linked Servers

problemas de comunicação
  • Verifique se a resolução de nome de rede funciona. Verificar se os servidores podem se comunicar entre si por nome, não apenas por endereço IP. Fazer check-in ambas as direções (por exemplo, do servidor A para servidor B e do servidor B para o servidor A). Você deve resolver todos os problemas de resolução de nome na rede antes de executar a consulta distribuída. Isso pode envolver a atualização WINS, DNS ou LMHost arquivos. Para obter mais informações, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:

    169790Como solucionar problemas básicos de TCP/IP
  • Se você tiver um firewall, certifique-se de que as portas RPC (chamada de procedimento remoto) são abertas corretamente.

    Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
    154596COMO: Configure RPC Dynamic Port Allocation para funcionar com firewall

    179442Como configurar um firewall para domínios e relações de confiança

    287932INF: Portas de TCP para comunicação com o SQL Server através de firewall
  • Verifique o objeto que você referir-se no servidor de destino. Se ele é um modo de exibição ou um procedimento armazenado ou faz com que uma execução de um disparador, verifique se ele implicitamente faz referência outro servidor. Em caso afirmativo, o terceiro servidor é a fonte do problema. Execute a consulta diretamente no servidor de terceiro. Se você não pode executar a consulta diretamente no terceiro servidor, o problema não está na verdade, com a consulta de servidor vinculado. Resolva o problema subjacente primeiro.
  • Verifique se você estiver usando o RAS (Remote Access Server) para acessar servidores remotos. Se afirmativo, certifique-se que você implementou roteamento RAS (RRAS). Servidor vinculado não funciona no RAS porque o RAS permite que somente uma forma de comunicação.

problemas de configuração
  • Inicie o Distributed Transaction Coordinator (DTC ou MSDTC) em todos os servidores envolvidos na transação distribuída.
  • Emitir essa instrução antes de executar a consulta:
    SET XACT_ABORT ON
    XACT_ABORT A opção deve ser definido como ON para instruções de modificação de dados em uma transação implícita ou explícita contra OLE DB a maioria dos provedores, incluindo SQL Server. Esta opção não será necessária se o provedor oferece suporte transações aninhadas.
  • Verifique se qualquer um dos servidores estão em um cluster. O DTC no cluster deve ter seu próprio endereço IP. Você deve verificar a resolução apropriada do serviço DTC em cada servidor. O endereço IP do DTC deve ser definido no sistema de resolução de nome (como WINS, DNS ou LMHosts). Verificar se cada servidor pode se comunicar do outro MSDTC pelo nome, não apenas por IP endereço. Fazer check-in ambas as direções. Por exemplo, verificar do servidor A para MSDTC do servidor B e verifique do servidor B ao servidor do MSDTC. Você deve resolver todos os problemas de resolução de nome na rede antes de executar a consulta distribuída.
  • Se você estiver usando anteriores de servidores remotos em vez dos servidores vinculados recomendados, defina trans de procedimento remoto
    configuração de opção de configuração para desativada para o servidor ou emitir um SET REMOTE_PROC_TRANSACTIONS OFF
    instrução antes de executar qualquer consulta distribuída. Se essa configuração é definida como ON, chama o procedimento remoto
    são feitas em uma transação local.
  • Verificar o valor retorno do sistema função @@ nome_do_servidor em ambos os servidores. Verificar se a
    valor de retorno corresponde ao nome computador de cada servidor. Se não corresponder, você precisará
    renomear o servidor.
    Para o SQL Server 2000, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
    303774Erro: Renomear um tópico de Server nos manuais online está incompleto

    Para o SQL Server 7.0, revise pergunta 5 no seguinte artigo da Base de dados de Conhecimento Microsoft:
    195759INF: Instalação perguntas freqüentes - SQL Server 7.0 - SQL
  • Verifique se a conta de inicialização do SQL Server tem permissões de controle total nessa chave do Registro:

    HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer
Referências
Para obter mais informações sobre como configurar servidores vinculados, visite o seguinte site:

Configuring Linked Servers

Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
295086 CORRECÇÃO: MS DTC limitado a 16 nós no única transações distribuídas
175496 XCON: Usando o RPCPING para solucionar problemas de conexões MTA
280106 COMO: Configurar e solucionar problemas de um servidor vinculado ao Oracle no SQL Server

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 306212 - Última Revisão: 02/16/2007 06:00:28 - Revisão: 7.4

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbmt kbwins kbregistry kbprovider kbdtc kbdriver kbtransaction kbrpc kbtshoot kberrmsg kbclustering kbip kbinfo KB306212 KbMtpt
Comentários