Como configurar e solucionar problemas de um servidor vinculado a um banco de dados Oracle no SQL Server

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

Neste artigo

Sumário

Este artigo passo a passo descreve como configurar um servidor vinculado em um computador que está executando o Microsoft SQL Server a um banco de dados Oracle e também fornece etapas básicas de solução de problemas para erros comuns que podem ocorrer quando você configurar um servidor vinculado ao Oracle.

Etapas para configurar um servidor vinculado ao Oracle

  1. Você deve instalar o software de cliente Oracle no computador que está executando SQL Server em que o servidor vinculado é configurado.
  2. Instale o driver que você deseja no computador que está executando o SQL Server. Microsoft oferece suporte somente Microsoft OLE DB Provider para Oracle e Driver Microsoft ODBC para Oracle. Se você usar um provedor de terceiros ou um driver de terceiros para se conectar ao Oracle, você deve contate o fornecedor respectivo para quaisquer problemas que podem ocorrer por meio de seu provedor ou driver.
  3. Se você usar o Microsoft OLE DB Provider para Oracle e Driver Microsoft ODBC para Oracle, considere o seguinte:
    • Tanto o provedor OLE DB e o driver ODBC que estão incluídos com o Microsoft Data Access Components (MDAC) exigem SQL * NET 2.3. x , ou uma versão mais recente. Você deve instalar o Oracle 7.3. x software de cliente, ou uma versão posterior, no computador cliente. O computador cliente é o computador que está executando o SQL Server.
    • Verifique se que você tem o MDAC 2.5 ou uma versão posterior, instalado no computador que está executando o SQL Server. Com MDAC 2.1 ou com uma versão anterior, você não pode se conectar a bancos de dados que usam Oracle 8. x ou uma versão posterior.
    • Para ativar o MDAC 2.5 ou posterior trabalhar com Oracle software cliente, o registro deve ser modificado no computador cliente que está executando SQL Server conforme indicado na tabela a seguir.
                 Microsoft Windows NT,
      Oracle     Microsoft Windows 95,
      Client     Windows 98, and Windows 98 SE    Microsoft Windows 2000 
      --------------------------------------------------------------------------
      
      7.x        [HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE  
                 \Microsoft\TransactionServer     Microsoft\MSDTC\MTxOCI]
                 \Local Computer\My Computer]     "OracleXaLib"="xa73.dll"
                 "OracleXaLib"="xa73.dll"         "OracleSqlLib"="SQLLib18.dll"
                 "OracleSqlLib"="SQLLib18.dll"    "OracleOciLib"="ociw32.dll"
                 "OracleOciLib"="ociw32.dll"   
      
      8.0        [HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE
                 \Microsoft\Transaction Server    \Microsoft\MSDTC\MTxOCI]
                 \Local Computer\My Computer]     "OracleXaLib"="xa80.dll"
                 "OracleXaLib"="xa80.dll"         "OracleSqlLib"="sqllib80.dll" 
                 "OracleSqlLib"="sqllib80.dll"    "OracleOciLib"="oci.dll"
                 "OracleOciLib"="oci.dll" 
      
      8.1        [HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE
                 \Microsoft\Transaction Server    \Microsoft\MSDTC\MTxOCI]
                 \Local Computer\My Computer]     "OracleXaLib"="oraclient8.dll" 
                 "OracleXaLib"="oraclient8.dll"   "OracleSqlLib"="orasql8.dll"  
                 "OracleSqlLib"="orasql8.dll"     "OracleOciLib"="oci.dll"
                 "OracleOciLib"="oci.dll"
  4. Reinicie o computador que está executando o SQL Server depois de instalar o software de cliente Oracle.
  5. On the computer that is running SQL Server, set up a linked server by using the following script.
    -- Adding linked server (from SQL Server Books Online):
    /* sp_addlinkedserver [@server =] 'server' 
        [, [@srvproduct =] 'product_name']
        [, [@provider =] 'provider_name'] 
        [, [@datasrc =] 'data_source'] 
        [, [@location =] 'location'] [, [@provstr =] 'provider_string'] 
        [, [@catalog =] 'catalog']
    */ 
    
    EXEC sp_addlinkedserver   'Ora817Link',  'Oracle',  'MSDAORA',  'oracle817'
    
    -- Adding linked server login:
    /* sp_addlinkedsrvlogin [@rmtsrvname =] 'rmtsrvname'
        [,[@useself =] 'useself']
        [,[@locallogin =] 'locallogin']
        [,[@rmtuser =] 'rmtuser']
        [,[@rmtpassword =] 'rmtpassword']
    */ 
    
    EXEC sp_addlinkedsrvlogin 'Ora817Link', 'FALSE',NULL, 'scott', 'tiger'
    
    -- Help on the linked server:
    EXEC sp_linkedservers
    EXEC sp_helpserver
    select * from sysservers
Observação Se você usar o Driver Microsoft ODBC para Oracle, você pode usar @ datasrc parâmetro para especificar um nome DSN. Para um DSN - menos conexão, a seqüência do provedor é fornecida por meio de @ provstr parâmetro. Com o Microsoft OLE DB Provider para Oracle, usar o alias do servidor Oracle que esteja configurado no arquivo de @ datasrc TNSNames.Ora parâmetro. Para obter mais informações, consulte o tópico "sp_addlinkedserver" nos manuais online do SQL Server.

Mensagens de erro comuns e como solucioná-los

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


Você pode usar dois métodos a seguir para recuperar informações estendidas sobre quaisquer erros que ocorrem quando você executar uma consulta distribuída.
  • método 1
    No Query Analyzer, execute o seguinte código para ativar o sinalizador de rastreamento 7300.
    DBCC Traceon(7300)
  • método 2
    Capture o evento "OLEDB erros" que está localizado na categoria de evento de "Erros e avisos" no SQL Profiler. O formato de mensagem de erro é o seguinte:
    Falha do Interface::Method com o código de erro hex.
    Você pode pesquisar o código de erro hex no arquivo oledberr.h incluída com o MDAC Software Development Kit (SDK).
A seguir está uma lista de dez mensagens de erro comuns que podem ocorrer, juntamente com informações sobre como solucionar a mensagem de erro.

Observação Se você estiver usando o SQL Server 2005, essas mensagens de erro podem ser um pouco diferentes. No entanto, as identificações de erro dessas mensagens de erro são mesmas-los no SQL Server 2000. Portanto, você pode identificá-los por erro identificações.

Observação Para problemas relacionados ao desempenho, procure manuais online do SQL Server para o tópico "Otimizando consultas distribuídas".
  • mensagem 1
    Erro 7399: O provedor do OLE DB '% 1!' relatou um erro. % 1!
    Ative sinalizador de rastreamento 7300 ou usar SQL Profiler para capturar o evento "OLEDB erros" para recuperar informações de erro estendidas OLEDB.
  • mensagem 2a
    "ORA-12154: TNS: não foi possível resolver serviço nome"
    mensagem 2b
    "Os componentes de rede e de cliente Oracle (tm) não foram encontrados. Esses componentes são fornecidos pela Oracle Corporation e são parte da versão do Oracle 7.3.3 (ou maior) instalação do software cliente "
    Para obter mais informações sobre como resolver problemas de conectividade do Oracle, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    259959Técnicas para depurar problemas de conectividade para um servidor Oracle usando o driver ODBC e provedor de banco de dados OLE
  • mensagem 3
    Erro 7302: Não foi possível criar uma instância do provedor OLE DB 'MSDAORA'
    Verifique se o arquivo MSDAORA.dll está registrado corretamente. (O arquivo MSDAORA.dll é o provedor Microsoft OLE DB para Oracle arquivo.) Use RegSvr32.exe para registrar o provedor Microsoft OLE DB para Oracle. Se o registro falhar, reinstale o Microsoft Data Access Components (MDAC). Para obter mais informações sobre o MDAC, visite o seguinte site da Web Microsoft Developer Network (MSDN):
    http://msdn.microsoft.com/data/Default.aspx
    Observação Se você usar um provedor de Oracle de terceiros e seu provedor Oracle não é possível executar fora de um processo do SQL Server, habilitá-lo executar em processo, alterando as opções do provedor. Para alterar as opções de provedor, use um dos seguintes métodos.
    • método 1
      Localize a seguinte chave do Registro. Em seguida, altere o valor da entrada AllowInProcess (DWORD) para 1. Essa chave do Registro está localizada sob o nome correspondente do provedor:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
    • método 2
      Defina a opção Permitir InProcess diretamente através do SQL Server Enterprise Manager, quando você adiciona um novo servidor vinculado. Clique em Opções do provedor e clique para selecionar a caixa de seleção Permitir InProcess .
  • mensagem 4
    Erro 7303: Não foi possível inicializar objeto de fonte de dados do provedor OLE DB 'MSDAORA'. [Provedor OLE/DB retornado mensagem: ORA-01017: nome de usuário/senha inválida; logon negado] Rastreamento de erro de OLE [provedor OLE/DB 'MSDAORA' IDBInitialize::Initialize retornou 0x80040e4d].
    Essa mensagem de erro indica que o servidor vinculado não tem mapeamento de logon correta. Você pode executar o procedimento sp_helplinkedsrvlogin armazenadas para definir as informações de logon corretamente. Verifique também se que você especificou os parâmetros corretos para a configuração do servidor vinculado.
  • mensagem 5
    Erro 7306: Não foi possível abrir tabela '% 1!' do provedor do OLE DB 'MSDAORA'. A tabela especificada não existe. [Provedor OLE/DB retornado mensagem: tabela não existe.][Provedor OLE/DB retornado mensagem: ORA-00942: tabela ou modo de exibição não existe] Rastreamento de erro de OLE [provedor OLE/DB 'MSDAORA' IOpenRowset::OpenRowset retornado 0x80040e37: A tabela especificada não existe.].
    Erro 7312: Inválido uso de esquema e/ou catálogo para o provedor do OLE DB '% 1!'. Um nome de quatro partes foi fornecido, mas o provedor não expõe as interfaces necessárias para usar um catálogo e/ou esquema.
    Erro 7313: Esquema inválida ou catálogo especificado para o provedor '% 1!'.
    Erro 7314: Provedor do OLE DB '% 1!' não contém tabela '% 1!'
    Se você receber essas mensagens de erro, uma tabela pode estar faltando no esquema do Oracle ou talvez você não tenha permissões nessa tabela. Verifique se que o nome de esquema tenha sido digitado usando letras maiúsculas. O caso em ordem alfabética da tabela e das colunas deve ser conforme especificado nas tabelas do sistema Oracle.

    No lado do Oracle, uma tabela ou uma coluna que é criada sem aspas duplas é armazenada em maiúsculas. Se a tabela ou a coluna é colocada entre aspas duplas, a tabela ou a coluna é armazenada como está.

    A seguinte chamada mostra se a tabela existe no esquema do Oracle. Essa chamada também mostra o nome de tabela exata.
    sp_tables_ex  @table_server=Ora817Link, @table_schema='your_schema_name'
    Para obter mais informações sobre a mensagem de erro 7306, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    240340Consulta distribuída com Oracle SQL causa erro "Não pode abrir a tabela"
  • mensagem 6
    Erro 7413: Não pode executar um logon autenticado do Windows NT porque a delegação não está disponível.
    Msg 18456, nível 14, estado 1, linha 1 Login failed for user ' \ '.
    As informações seguintes são de manuais online do SQL Server:
    Esta mensagem de erro indica que uma consulta distribuída está sendo tentada para um logon autenticado do Microsoft Windows sem um mapeamento de logon explícito. Em um ambiente de sistema operacional na qual segurança delegação não tem suporte, o Windows NT autenticados logons necessidade um mapeamento explícito para um logon remoto e uma senha criados usando sp_addlinkedsrvlogin .
  • mensagem 7
    Erro 7354: OLE DB provedor 'MSDAORA' fornecida metadados inválidos para a coluna '% 1!'. Não há suporte para o tipo de dados.
    Se você receber essa mensagem de erro, talvez você esteja tendo o bug descrita no seguinte artigo Base de dados de Conhecimento Microsoft:
    243027CORRECÇÃO: Coluna numérica no Oracle causa erro 7354
  • mensagem 8
    Erro 7356: OLE DB provedor 'MSDAORA' fornecida metadados inconsistentes para uma coluna. Informações de metadados foram alteradas em tempo de execução.
    Se sua consulta de servidor vinculado usa um modo de exibição do Oracle, você pode estar enfrentando o problema descrito no seguinte artigo da Base de dados de Conhecimento Microsoft:
    251238Consultas distribuídas retornam Erro 7356 com MSDAORA
  • mensagem 9
    Erro 7391: A operação não pôde ser executada porque o provedor OLE DB 'MSDAORA' não dá suporte a transações distribuídas. Rastreamento de erro de OLE [provedor OLE/DB 'MSDAORA' ITransactionJoin::JoinTransaction retornado 0x8004d01b]
    Verificar se as versões OCI são registradas corretamente conforme descrito anteriormente neste artigo.

    Observação Se as entradas do registro estiverem todos corretas, o arquivo MtxOCI.dll é carregado. Se o arquivo MtxOCI.dll não é carregado, você não poderá executar transações distribuídas contra Oracle usando o Microsoft OLE DB Provider para Oracle ou usando o Driver Microsoft ODBC para Oracle. Se você estiver usando um provedor de terceiros e receber erro 7391, verifique se o provedor OLE DB que você está usando oferece suporte a transações distribuídas. Se o provedor OLE DB dá suporte a transações distribuídas, verifique se o Microsoft Distributed Transaction Coordinator (MSDTC) está em execução.
  • mensagem 10
    Erro 7392: Não foi possível iniciar uma transação provedor do OLE DB 'MSDAORA'. Rastreamento de erro de OLE [provedor OLE/DB 'MSDAORA' ITransactionLocal::StartTransaction retornado 0x8004d013: ISOLEVEL = 4096].
    As informações seguintes são de manuais online do SQL Server:
    O provedor OLE DB retornado o erro 7392 porque apenas uma transação pode estar ativa para esta sessão. Este erro indica que uma instrução de modificação de dados está sendo tentada contra um provedor OLE DB quando a conexão estiver em uma transação explícita ou implícita, e o provedor OLE DB não dá suporte a transações aninhadas. SQL Server requer esse suporte para que, em determinadas condições de erro, ele pode finalizar os efeitos da instrução de modificação de dados enquanto continua com a transação.
    Se SET XACT_ABORT ativado, o SQL Server não requer suporte a transações aninhadas do provedor OLE DB. Portanto, execute SET XACT_ABORT ativado antes de executar instruções de modificação de dados em tabelas remotas em uma transação implícita ou explícita. Para fazer isso caso o provedor OLE DB que você está usando não dá suporte transações aninhadas.

Referências

Para obter mais informações, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
244661Limitações do driver ODBC do Microsoft Oracle e o provedor OLE DB
259959Técnicas para depurar problemas de conectividade para um servidor Oracle usando o driver ODBC e provedor de banco de dados OLE
239719Capacidade de suporte do provedor Microsoft ODBC driver/OLE DB para Oracle w.r.t Oracle 8.x
193893Informações sobre como usar Oracle com componentes do Microsoft Transaction Server e COM +
191168Erro "-2147168246 (8004d00a)" Falha ao se inscrever na transação do objeto de chamada
Para obter mais informações sobre como usar um servidor vinculado com DB2, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
218590Configurando fontes de dados para o provedor Microsoft OLE DB para DB2
216428Configurando o driver ODBC do Microsoft para DB2

Propriedades

ID do artigo: 280106 - Última revisão: sexta-feira, 23 de dezembro de 2005 - Revisão: 7.7
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit 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
Palavras-chave: 
kbmt kbhowtomaster KB280106 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: 280106

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