ID do artigo: 191168 - Última revisão: sexta-feira, 14 de março de 2003 - Revisão: 2.0

INFO: Erro de "-2147168246 (8004d00a)" Falha ao inscrever na chamada de transação do objeto

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Observação Essa mensagem de erro pode ser associada com o erro número-2147168246 (8004d00a).

importante Este artigo contém informações sobre como editar o registro. Antes de editar o registro, verifique se que você sabe como restaurá-lo se ocorrer um problema. Para obter informações sobre como fazer isso, consulte o tópico da Ajuda "Restaurando o registro" no Regedit.exe ou o tópico da Ajuda "Restaurando uma chave do Registro" no Regedt32.exe.

Nesta página

Expandir tudo | Recolher tudo

Sumário

O que significa a mensagem "Falha ao inscrever na transação do objeto de chamada" significa?

O Gerenciador de driver ODBC relata esse erro quando um componente transacional do Microsoft Transaction Server tenta abrir uma conexão de banco de dados e o Gerenciador de driver não é possível inscrever-se a conexão de banco de dados na transação atual. O Gerenciador de driver ODBC inscreve a conexão de banco de dados na transação atual chamando o procedimento de SQLSetConnectionAttr (SQL_ATTR_ENLIST_IN_DTC) do driver ODBC. O Gerenciador de driver ODBC exibe a mensagem "Falha ao inscrever" se a chamada para o procedimento SQLSetConnectionAttr falhar.

Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
193893  (http://support.microsoft.com/kb/193893/EN-US/ ) Usando bancos de dados Oracle com o Microsoft Transaction Server

Mais Informações

Ao usar o Microsoft SQL Server

Se este erro ocorre quando o componente Microsoft Transaction Server transacional estiver acessando um banco de dados do Microsoft SQL Server, verifique o seguinte:
  1. Certifique-se de que o Microsoft Distributed Transaction Coordinator(MS DTC) serviço é iniciado.

    Certifique-se se o serviço MS DTC foi iniciado no sistema em que o Microsoft Transaction Server componentes são implantados. Se seu aplicativo do Microsoft Transaction Server estiver acessando um banco de dados Microsoft SQL Server em um sistema remoto, verifique se o serviço MS DTC é iniciado também no sistema. Isso com freqüência é a causa o "Failed to erro inscrever".

    Execute as seguintes etapas para verificar o status do serviço MS DTC:
    1. No menu Iniciar , selecione configurações e em seguida, clique em Painel de controle.
    2. Selecione o ícone Serviços.
    3. Role a lista de serviços e confirme se o status do serviço MS DTC foi iniciado. Se o status do MS DTC estiver em branco (não iniciado), você pode iniciá-lo selecionando o MSDTC e, em seguida, clicando em Iniciar .
  2. Verifique a configuração de rede.

    Quando um componente do Microsoft Transaction Server transacional em um sistema acessa um banco de dados SQL Server em outro sistema, o MS DTC propaga a transação do DTC do sistema primário ou primeiro para o sistema secundário. Transação propagação só pode ocorrer se o processo do DTC no sistema primário puder se comunicar com o processo do DTC no sistema secundário. Os processos DTC estabeleçam conexões de (RPC) chamada de procedimento remoto nas duas direções, que significa que um problema de configuração de rede em qualquer sistema pode impedir que o DTC processos com êxito se comuniquem uns com os outros. Isso faz com que o ODBC retornar um erro "Falha ao inscrever".

    Geralmente o seguinte evento de MS DTC é registrado no log de eventos do aplicativo do Windows NT:
    Primária: Falha na ligação de sessão. Primária esgotado ao aguardar o secundário para BIND.
    Este erro indica que o DTC no Microsoft Transaction Server computador não pôde vincular a DTC no SQL Server, mas DTC no SQL Server não pôde executar a ligação inversa no Microsoft Transaction Server computador.

    Se sua configuração de rede estiver incorreta, cada tentativa para conectar o banco de dados SQL Server remoto resultará em uma mensagem de erro "Falha ao inscrever". Se você receber uma mensagem de erro "Falha ao inscrever" consistentemente mesmo depois que o Microsoft DTC tiver sido iniciado em ambos os sistemas, a causa mais provável da falha é um erro de configuração de rede.

    Se isso ocorrer, verifique sua configuração de rede usando Pingtest.bat da seguinte maneira:
    1. Use um editor de texto (como o bloco de notas) para criar um arquivo chamado Pingtest.bat. Copie os seguintes comandos de arquivo em lotes para ela.
         echo off
         REM Usage pingtest OtherMachineName
         REM Must use a machine name and NOT an IP address
         ping -n 1 %computername%
         ping -n 1 %1
         ipconfig /all
         echo on
      O arquivo em lotes usa % computername % para exibir o endereço IP local. Ele exibe o endereço IP do computador remoto que você especificar na linha de comando ao executar o arquivo em lotes. Quando você chamar o arquivo em lotes, você deve especificar o nome do computador remoto e não seu endereço IP. Usando o nome de computador força ping resolver o nome da máquina exatamente o mesmo que o MS DTC não quando ele liga ao computador remoto do MS DTC.
    2. Execute Pingtest.bat no Microsoft Transaction Server computador para determinar se você pode efetuar ping o computador SQL Server por nome. Capture a saída do arquivo em lotes em um arquivo de texto. Por exemplo, se o Microsoft Transaction Server estiver sendo executado no computador A e SQL Server está sendo executado no computador B, use o seguinte comando:
      Pingtest B > AResults.txt
    3. Execute Pingtest.bat no computador do SQL Server para determinar se o computador do Microsoft Transaction Server pode efetuar ping por nome. Capture a saída do arquivo em lotes em um arquivo de texto. Por exemplo, se o Microsoft Transaction Server estiver sendo executado no computador A e SQL Server está sendo executado no computador B, use o seguinte comando:
      Pingtest A > BResults.txt
    4. Examine o conteúdo dos arquivos de dois texto para garantir que os dois computadores podem efetuar ping um outro com êxito.

      Se você usar os arquivos hosts ou Lmhosts para resolução de nome, verificar esses arquivos com muito cuidado para garantir que elas contêm nome de computador válido para mapeamentos de endereços IP. Para fazer isso, verifique os hosts e os arquivos Lmhosts no diretório Winnt40\System32\Drivers\Etc no tanto O Microsoft Transaction Server computador e o SQL Server. Com freqüência, o arquivo em um sistema estará correto, enquanto que no outro sistema está incorreta.
  3. Configurar o SQL Server para usar TCP/IP em vez de nome pipes.

    Se você apenas ver a mensagem de erro "Falha ao inscrever" intermitentemente, em seguida, usar pipes nomeados em vez de TCP/IP pode ser a causa do problema. Usar pipes nomeados pode resultar em erros "Falha ao inscrever" intermitentes.
    A Microsoft recomenda fortemente que você configure o SQL Server para usar TCP/IP em vez de pipes nomeados. Usar pipes nomeados pode resultar em erros intermitentes "Falha ao inscrever".
    1. No menu Iniciar , selecione programas, selecione Microsoft SQL Server 6.5 e, em seguida, clique em SQL Client Configuration Utility .
    2. Clique na guia Biblioteca de rede .
    3. Na lista padrão de rede, selecione TCP/IP Sockets.
    4. Clique em OK .
  4. Verifique o tempo limite da transação.

    O componente transação pode ter parado devido ao tempo limite da transação antes da inscrição do banco de dados concluída. Você pode aumentar o valor de tempo limite da transação por meio do Microsoft Transaction Server Explorer. Use as seguintes etapas para aumentar o valor do tempo limite:

    1. Inicie o Microsoft Transaction Server Explorer e selecione computadores.
    2. Clique com o botão direito no computador onde a transação foi iniciada e clique em Propriedades .
    3. Clique na guia Opções e especifique um valor de tempo limite mais.
    Isso é improvável que seja o problema a menos que as transações de levar um tempo anormalmente longo. No entanto, talvez seja útil aumentar temporariamente o valor de tempo limite para eliminar isso como uma fonte potencial de problemas.

Ao usar o Oracle

Se este erro ocorre quando o componente Microsoft Transaction Server transacional estiver acessando um banco de dados Oracle, verifique o seguinte:
  1. Verifique se o serviço MS DTC é iniciado.

    Certifique-se de que o serviço DTC da Microsoft está "iniciado" no sistema no qual os componentes do Microsoft Transaction Server são implantados.
    Use as seguintes etapas para verificar seu status:
    1. No menu Iniciar , selecione configurações e em seguida, clique em Painel de controle.
    2. Selecione o ícone Serviços.
    3. Role a lista de serviços e confirme se o status do serviço MS DTC foi iniciado. Se o status do MS DTC estiver em branco (não iniciado), você pode iniciá-lo selecionando o MSDTC e, em seguida, clicando em Iniciar .
  2. Instale o software cliente Oracle mais recente no computador do Microsoft Transaction Server.

    Certifique-se que a versão de patch de software Oracle 7.3 ou cliente do Oracle 8 mais recente é instalada no sistema que contém os componentes do Microsoft Transaction Server. Observe que é comum para atualizar o software Oracle no sistema que contém o banco de dados Oracle, mas falham atualizar o software Oracle no sistema que contém os componentes do Microsoft Transaction Server. Você deve atualizar o software Oracle no sistema cliente.

    Você pode obter os patches mais recentes do Oracle Windows NT a partir do site FTP da Oracle. Vá para:
    ftp://oracle-ftp.oracle.com (ftp://oracle-ftp.oracle.com) e selecione "server", "wgt técnico", "server" e "windowsNT"
  3. instalar o software mais recente do Oracle Server no seu banco de dados Oracle Server System.

    Se o aplicativo Microsoft Transaction Server acessa um banco de dados Oracle em um sistema Windows NT ou UNIX, verifique se o patch mais recente do Oracle está instalado no sistema.

    Você pode obter os patches mais recentes do Oracle para Windows NT a partir do site do Oracle. Vá para:
    ftp://oracle-ftp.oracle.com (ftp://oracle-ftp.oracle.com) e selecione "server", "wgt técnico", "server" e "windowsNT"
  4. Use o driver ODBC do Microsoft Oracle.

    Certifique-se de que o Microsoft Transaction Server está usando o ODBC para Oracle Microsoft driver. Nenhum driver de ODBC do Oracle ofereça suporte ao Microsoft Transaction Server transações.

    Você deve instalar um dos seguintes drivers de ODBC do Oracle Microsoft se você desejar usar Microsoft Transaction Server transações de uma plataforma Intel x 86.

    Recolher esta tabelaExpandir esta tabela
    Driver ODBC Microsoft OracleVersão númeroVeículos de lançamento
    2.0 atualizado2.73.7283.03MDAC 1.5b
    MDAC 1.5 c
    Windows NT 4.0 Option pack
    2.0 atualizado2.73.7356SDK DO ODBC 3.5
    2.52.573.2927O Visual Studio 6.0
    Acesso a dados SDK 2.0
    MDAC 2.0

    Você deve instalar o Microsoft Oracle ODBC 2.5 versão do driver 2.573.2927, se você deseja usar o Microsoft Transaction Server transações de uma plataforma Compaq Alpha. Versões anteriores do driver ODBC do Microsoft Oracle não oferecem suporte a plataforma Compaq Alpha.

    Você pode obter Microsoft Oracle ODBC driver 2.5 do:

    http://microsoft.com/data (http://msdn.microsoft.com/dataaccess) seguindo o link "Downloads".

    Se você desejar acessar um Oracle banco de dados, sugerimos que você use o driver de ODBC do Microsoft Oracle 2.0 ou posterior driver mesmo se você não precisa suporte a transações. Esse novo driver oferece melhor desempenho que o driver do Microsoft Oracle ODBC 1.0 ele substituído O Oracle 1.0 driver serializado todas as atividades no nível do driver; solicitações foram single-threaded por meio do driver. A Microsoft Oracle 2.0 e posteriores drivers serializar todas as atividades no nível de conexão. Isso permite conexões de banco de dados diferente a ser usado em paralelo.
  5. Certifique-se que suporte XA da Oracle está ativado.

    Verifique se o suporte a transações XA da Oracle foi ativado. Para obter mais informações, consulte a seção "Ativando Oracle XA transações suporte" no documento "Oracle usando dados com o Microsoft Transaction Server".

    1. Se você estiver usando o Oracle 7.3, verifique se existe V $ XATRANS $. Este modo de exibição deve foram criado quando a biblioteca XA foi instalada. Se esse modo de exibição não existir, o administrador do sistema Oracle deve criá-lo executando o script fornecido pelo Oracle chamado "XAVIEW.SQL". Esse arquivo pode ser encontrado em C:\ORANT\RDBMS73\ADMIN. Este script SQL deve ser executado como usuário Oracle "SYS".

      Se você estiver usando Oracle8, este modo de exibição deve existir. Você não precisará criá-la.
    2. Para Oracle 7.3 e Oracle8, o administrador do sistema Oracle deve conceder acesso SELECT a público do modo de exibição DBA_PENDING_TRANSACTIONS.
      Grant Select on V$XATRANS$ to public.
    3. No Gerenciador de instância do Oracle, clique em Modo avançado no menu Exibir e selecione "Parâmetros de inicialização" no painel à esquerda. No painel direito, selecione "Ajuste avançadas" e aumentar o parâmetro "distributed_transactions" para permitir transações mais simultâneas de MTS atualizar o banco de dados por vez.
    Consulte a documentação do Oracle Server para obter mais informações sobre como configurar suporte a transações XA da Oracle.
  6. Verifique se que caracteres numéricos do Oracle estão configurados corretamente.

    Aviso Usando o Editor do Registro incorretamente pode causar problemas sérios que talvez exijam a reinstalação do sistema operacional. A Microsoft não garante que problemas resultantes do uso incorreto do Editor do Registro possam ser resolvidos. Use o Editor do registro por sua própria conta e risco.

    Para obter informações sobre como editar o registro, consulte o tópico da Ajuda "Alterando chaves e valores" no Editor do Registro (Regedit.exe) ou tópicos de Ajuda "Adicionar e excluir informações no Registro" e "Editar dados de registro" no Regedt32.exe. Observe que você deve fazer backup do registro antes de editá-lo.

    Os clientes que possuem sistemas localizados fora dos Estados Unidos talvez precise configurar suporte de caractere numérico do Oracle. No registro do Windows NT, localize a seguinte chave do Registro:
    HKEY_LOCAL_MACHINE\SOFTWARE\Oracle
    e adicione esta entrada:
    "NLS_NUMERIC_CHARACTERS"=".,"
    Observação : os caracteres dentro a seqüência de caracteres entre aspas acima são um ponto e uma vírgula, nessa ordem.
  7. Verifique se que o Oracle está configurado com conexões adequados.

    Se você desejar criar mais do que algumas dúzias conexões a um banco de dados Oracle, verifique se a Oracle está configurado para oferecer suporte a conexões de banco de dados adicionais. Para obter mais informações, consulte a seção "Configurando Oracle para suporte um grande número de conexões"no documento"Oracle usando dados com o Microsoft Transaction Server".
  8. Verifique se tem uma conexão com o banco de dados Oracle se você usar segurança integrada do Oracle.

    Se você usar segurança integrada do Oracle, certifique-se que o MS DTC está sendo executado em uma identificação de logon e senha que está autorizada a se conectar ao banco de dados Oracle. Para obter mais informações, consulte a seção "Configurando segurança integrada" no documento "Usando Oracle Databases com o Microsoft Transaction Server".
  9. Execute o programa TestOracleXAConfig.

    Execute o programa TestOracleXAConfig para certificar-se que você pode se com êxito conectar ao banco de dados Oracle sem usar Microsoft Transaction Server. Para obter mais informações, consulte a seção "Teste instalação e configuração do MTS suporte para Oracle" no documento "Using an Oracle Database com Microsoft Transaction Server".
  10. Execute o programa exemplo Bank.

    Executar programa Bank exemplo para certificar-se de que você pode se com êxito conectar ao banco de dados Oracle de um programa do Microsoft Transaction Server. Para obter mais informações, consulte a seção "Validação Oracle instalação e configuração usando o exemplo do aplicativo" no documento "Using Oracle bancos de dados com o Microsoft Transaction Server".
  11. Ative o rastreamento do Oracle.

    Oracle é capaz de gerar arquivos de rastreamento que registram as informações enviadas entre o Oracle cliente e servidor. Esses arquivos de rastreamento podem ser extremamente útil no diagnóstico de problemas. Você pode tornar-se de que Oracle rastreamento da seguinte maneira:
    1. Verifique que Mtxoci.dll instalado no seu sistema MTS é a versão 1998.08.762.0 ou posterior. A versão 1998.08.762.0 foi lançada com o lançamento do NT4 Service Pack 4. Ele foi a primeira versão do Mtxoci.dll permite que você ativar o rastreamento Oracle e controlar o local dos arquivos de rastreamento Oracle.
    2. Usar o Explorer para localizar e excluir qualquer Oracle existente rastrear arquivos no seu sistema. Esses arquivos têm nomes que terminam com o sufixo ".trc". Excluindo arquivos de rastreamento obsoleto, você torna mais fácil localizar qualquer recém-criado aquelas.
    3. Execute o REGEDIT para criar a seguinte chave do Registro:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Transaction Server\Local Computer\My Computer\OracleTraceFilePath
      fornece essa chave o seguinte valor REG_SZ:
      C:\OraTrace+DbgFl=7
      pode escolher uma unidade de disco diferente e o diretório para os arquivos de rastreamento se desejar.
    4. Use o Explorer para criar o diretório de arquivo de rastreamento Oracle. Em nosso exemplo, crie o diretório "OraTrace" na unidade "C".
    5. Parar o pacote MTS que está acessando o Oracle banco de dados. Ao interromper o pacote você garante que todas as conexões de banco de dados Oracle existentes são fechadas e que novas conexões de banco de dados Oracle são abertos quando o componente MTS é a próximo chamada. Essas conexões de banco de dados Oracle recém-abertos tem Oracle rastreamento ativado.
    6. Chama o componente Microsoft Transaction Server que está abrindo o banco de dados Oracle.
    7. Examine os arquivos de rastreamento do Oracle recém-criados.
  12. Ativar rastreamento de erro do MTS/Oracle

    MTS é capaz de capturar informações adicionais sobre erros Oracle no log de eventos do aplicativo Windows. Você pode capturar essas informações da seguinte maneira:
    1. Execute o REGEDIT para criar a seguinte chave do Registro:
      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping\MTx.Ini\TRACE
    2. Parar o pacote MTS que está acessando o Oracle banco de dados. Interrompendo o pacote de você garantir que o Mtxoci.dll executado rastreamento quando ele for reiniciado.
    3. Chama o componente Microsoft Transaction Server que está abrindo o banco de dados Oracle.
    4. Use o o Visualizar eventos do Windows para examinar o aplicativo de log de eventos. Procure eventos gerados por MTXOCI. Você pode ver eventos semelhante ao seguinte:
      Mensagem de seqüência de caracteres: sqlld2 chamada falhou com erro 0x849.
      O valor de erro é exibido em octal. Você pode usar o programa Calculadora para converter o valor de erro em decimal. Neste exemplo, "0x849" é traduzida o valor de erro Oracle 2121.
  13. Verifique o tempo limite da transação.

    Considere se a transação do componente Microsoft Transaction Server pode ter encerrado antes da inscrição do banco de dados concluída. Isso pode ocorrer se o tempo limite da transação expirar antes de concluir a inscrição de banco de dados Oracle.

    Você pode aumentar o valor de tempo limite da transação por meio do Microsoft Transaction Server Explorer. Para fazer isso, execute essas etapas:

    1. Execute o Microsoft Transaction Server Explorer e selecione computadores.
    2. Clique com o botão direito no computador onde a transação foi iniciada e selecione Propriedades no menu de atalho.
    3. Selecione a guia Opções e especifique um valor de tempo limite mais.
    Isso é improvável que seja o problema, a menos que as transações durar mais de um minuto. No entanto, talvez seja útil aumentar temporariamente o valor de tempo limite para eliminar isso como uma fonte potencial de problemas.

O que fazer se você ainda obter este erro

Se você ainda receber esse erro depois de fazer tudo descrito aqui, você deve relatar o erro ao Microsoft Product Support organização. Forneça as seguintes informações com seu relatório de problema.
  1. Descreva o problema. O erro "Falha ao inscrever" ocorre sempre que você tenta usar o Microsoft Transaction Server transações ou é a falha intermitente? Se a falha intermitente, freqüência ele ocorre?
  2. Descreva a configuração do aplicativo e do sistema.
    1. Descreva o Microsoft Transaction Server aplicativo componentes são instalados no sistema. Se você estiver usando um banco de dados Oracle, fornecer a versão do software de cliente Oracle e o driver ODBC do Microsoft Oracle está usando.
    2. Você está usando um banco de dados Microsoft SQL ou um Oracle banco de dados? É o banco de dados no mesmo computador como o Microsoft Transaction Server componentes do aplicativo ou é em um computador separado? Se você estiver usando um banco de dados Oracle, que tipo de sistema é o banco de dados Oracle instalado em e qual versão do software Oracle está instalado?
    3. O transporte de rede você está usando: nome TCP/IP, pipes, IPX/SPX e assim por diante? O serviço de nome você está usando: WINS, DNS, hospedar arquivos e assim por diante?
  3. O programa TestOracleXAConfig é executado?

    Se você estiver usando um banco de dados Oracle, tente executar o programa TestOracleXAConfig. Se esse programa falhar, o problema está com Oracle. Relate o problema ao suporte de cliente Oracle.
  4. O programa de banco de exemplo funciona?

    Tente executar o programa de banco de exemplo com o Microsoft SQL Server. Se você estiver usando um Oracle banco de dados, o aplicativo de exemplo Bank funciona com Oracle? Se não, o erro está você ocorrendo?
  5. Quais erros são relatados nos arquivos de rastreamento do Oracle?

    Se você estiver usando um banco de dados Oracle, as informações que estão presentes nos arquivos de rastreamento do Oracle? Para capturar essas informações, primeiro localizar e excluir todos os existente Oracle rastrear arquivos no sistema. Esses arquivos têm nomes que terminam com a extensão .TRC. Após você excluir todos os arquivos de rastreamento existente, execute a falha do componente do Microsoft Transaction Server e fornecer Microsoft com o conteúdo dos arquivos de rastreamento do Oracle.
  6. Quais erros são relatados no log de eventos do Windows NT?

    Verifique o log de eventos do Windows NT e relatar todos os eventos DTC foram registrados ou próximo o momento da falha.
  7. Você está usando segurança integrada do Oracle?

    Relate se você estiver usando segurança integrada do Oracle.
  8. O que é o valor de tempo limite da transação?

    Informe a Microsoft o valor tempo limite da transação é configurado no Microsoft Transaction Server.

Referências

Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
193893  (http://support.microsoft.com/kb/193893/EN-US/ ) Usando bancos de dados Oracle com o Microsoft Transaction Server

A informação contida neste artigo aplica-se a:
  • Microsoft Transaction Services 1.0
  • Microsoft Transaction Services 2.0
Palavras-chave: 
kbmt kbdatabase kberrmsg kbfaq kbinfo kbmts kbmts100 kbmts200 KB191168 KbMtpt
Tradução automáticaTraduçã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: 191168  (http://support.microsoft.com/kb/191168/en-us/ )
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.