DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 280106 - Última revisão: segunda-feira, 22 de dezembro de 2014 - Revisão: 8.0

 

Nesta página

Sumário

Este artigo passo a passo descreve como configurar um servidor vinculado em um computador que esteja executando o Microsoft SQL Server para 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ê configura um servidor vinculado ao Oracle.

Etapas para configurar um servidor vinculado ao Oracle

  1. Você deve instalar o software cliente do Oracle em thecomputer que está executando o 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 apenas ao MicrosoftOLE DB Provider para Oracle e Driver Microsoft ODBC para Oracle. Se você usar um provedor de terceiros ou um driver de terceiros para seconectar para Oracle, você deve contatar o respectivo fornecedor de todos os problemas que podem ocorrer com o seu provedor ou driver.
  3. Se você usar MicrosoftOLE DB Provider para Oracle e Driver Microsoft ODBC para Oracle, considere o seguinte:
    • O provedor OLE DB e o driver ODBC que estão incluídos com o Microsoft Data Access Components (MDAC) requerem o SQL * Net 2.3.xou uma versão posterior. Você deve instalar o Oracle 7.3.software de cliente x ou uma versão posterior, no computador cliente. O computador cliente é o computador que está executando o SQL Server.
    • Certifique-se de 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 o Oracle 8.x ou uma versão posterior.
    • Para habilitar o MDAC 2.5 ou posterior trabalhar com o software de cliente Oracle, o registro deve ser modificado no computador cliente que esteja executando o 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 após a instalação do software de cliente de theOracle.
  5. No computador que está executando o SQL Server, configure um servidor vinculado usando script asseguintes.
    -- 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 do Microsoft ODBC para Oracle, você pode usar o parâmetro @datasrc para especificar um nome DSN. Para uma conexão sem DSN, a seqüência do provedor é fornecida por meio do parâmetro @provstr . Com o Microsoft OLE DB Provider para Oracle, use o alias do servidor Oracle que é configurado no arquivo Tnsnames ora para o parâmetro @datasrc . 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: Essa 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. Portanto, certifique-se de seguir estes passos cuidadosamente. Para obter mais proteção, faça backup do registro antes de modificá-lo. Em seguida, você poderá restaurar o registro caso ocorra um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número do artigo a seguir para visualizá-lo na Base de Conhecimento Microsoft:
322756  (http://support.microsoft.com/kb/322756/ ) Como fazer backup e restaurar o registro no Windows


Você pode usar qualquer um dos dois métodos a seguir para recuperar informações estendidas sobre quaisquer erros que ocorrem quando você executa 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 andWarnings" no SQL Profiler. O formato de mensagem de erro é asseguintes:
    Interface::Method falhou com código de erro hexadecimal.
    Você pode procurar o código de erro hexadecimal no arquivo oledberr que isincluded com o MDAC Software Development Kit (SDK).
A seguir está uma lista das dez mensagens de erro comuns que podem ocorrer, além de 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 ligeiramente diferentes. No entanto, as identificações de erro dessas mensagens de erro são iguais-los no SQL Server 2000. Portanto, você pode identificá-los pelo erro de IDs.

Observação: Para problemas relacionados a desempenho, procure o tópico "Otimizando consultas distribuídas" na BooksOnline do SQL Server.
  • Mensagem 1
    Erro 7399: Provedor do OLE DB ' % ls'reported um erro. %ls
    Ative o sinalizador de rastreamento 7300 ou use o SQL Profiler para capturar o evento "OLEDB erros" para recuperar informações de erro estendidas OLEDB.
  • Mensagem 2a
    "ORA-12154: TNS: poderia não resolveservice nome"
    Mensagem 2b
    "O cliente Oracle (tm) e networkingcomponents não foram encontrados. Esses componentes são fornecidos pela Oracle Corporationand são parte da Oracle versão 7.3.3 (ou superior) softwareinstallation de 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 Microsoft:
    259959  (http://support.microsoft.com/kb/259959/ ) Técnicas para depurar problemas de conectividade para um servidor Oracle usando o driver ODBC e o provedor do OLE DB
  • Mensagem 3
    Erro 7302: Não foi possível criar o aninstance do provedor do OLE DB 'MSDAORA'
    Certifique-se de que o arquivo MSDAORA.dll está registrado corretamente. (O arquivo MSDAORA.dll é o provedor Microsoft OLE DB para arquivo Oracle.) Use RegSvr32.exe para registrar o Microsoft OLE DB Provider for Oracle. Se o registo falhar, reinstale o Microsoft Data Access Components (MDAC). Para obter mais informações sobre o MDAC, visite o seguinte site da Microsoft Developer Network (MSDN):
    http://msdn.microsoft.com/data/default.aspx (http://msdn.microsoft.com/data/Default.aspx)
    Observação: Se você usar um provedor de Oracle de terceiros e não pode ser executado por seu provedor de Oracle fora de um processo do SQL Server, habilitá-lo ser executado no processo pelas opções de provedor de changingthe. 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) como 1. Essa chave do registro é locatedunder o nome do provedor correspondente:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
    • Método 2
      Definir a opção De permitir diretamente por meio do SQL Server Enterprise Manager, quando youadd um novo vinculado servidor. Clique em Opções de provedore, em seguida, clique para selecionar a caixa de seleção Permitir de .
  • Mensagem 4
    Erro 7303: Não foi initializedata fonte objeto do provedor do OLE DB 'MSDAORA'. [Returnedmessage de provedor OLE/DB: ORA-01017: nome de usuário/senha inválida; logon negado] Rastreamento de erro de OLE DB [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. Além disso, verifique se você especificou os parâmetros corretos para a configuração de linkedserver.
  • Mensagem 5
    Erro 7306: Não foi possível abrir a tabela '%ls' do provedor do OLE DB 'MSDAORA'. A tabela especificada não existe.[Provedor OLE/DB retornado mensagem: a tabela não existe.][OLE/DB providerreturned mensagem: ORA-00942: tabela ou modo de exibição não existe] Rastreamento de erro de OLE DB [provedor OLE/DB 'MSDAORA' IOpenRowset::OpenRowset retornou 0x80040e37: a tabela Thespecified não existe.].
    Uso de 7312:Invalid erro de esquema e/ou catálogo para o provedor de OLE DB '%ls'. Um partname quatro foi fornecido, mas o provedor não expõe as interfaces necessárias usar um catálogo e/ou esquema.
    Erro 7313:Invalid o esquema ou catálogo especificado para o provedor '%ls'.
    Erro 7314: O provedor OLE DB '%ls' não contém a tabela '%ls'
    Se você receber essas mensagens de erro, uma tabela pode estar falta no esquema Oracle ou talvez você não tenha permissões nessa tabela. Verifique se o nome de esquema foi digitado usando letras maiúsculas. O caso em ordem alfabética da tabela e das colunas deve ser conforme especificado nas tabelas de sistema Oracle.

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

    A chamada a seguir mostra se a tabela existe no esquema do Oracle. Essa chamada também mostra o nome da 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 Microsoft:
    240340  (http://support.microsoft.com/kb/240340/ ) Consulta distribuída do SQL com a Oracle faz com que o erro "Não foi possível abrir a tabela"
  • Mensagem 6
    Erro 7413: Não foi possível executar o logon autenticado aWindows NT porque a delegação não está disponível.
    Msg 18456, nível 14, estado 1, linha 1 Loginfailed para usuário ' \'.
    As informações a seguir são de Manuais Online do SQL Server:
    Essa mensagem de erro indica que uma consulta distribuída está sendo tentada 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 é suportada, o Windows NT autenticado necessidade de logins um mapeamento explícito para um logon remoto e a senha criados usando sp_addlinkedsrvlogin.
  • Mensagem 7
    Erro 7354: OLE DB provider'MSDAORA' forneceu metadados inválido para a coluna '%ls'. O tipo de dados é notsupported.
    Se você receber essa mensagem de erro, você pode estar enfrentando o erro descrito no seguinte artigo da Base de Conhecimento Microsoft:
    243027  (http://support.microsoft.com/kb/243027/ ) CORREÇÃO: Coluna numérica no Oracle faz com que o erro 7354
  • Mensagem 8
    Erro 7356: OLE DB provider'MSDAORA' forneceu metadados inconsistentes para uma coluna. Waschanged de informações de metadados em tempo de execução.
    Se sua consulta de servidor vinculado usa um modo de exibição de Oracle, você pode ser enfrentando o problema descrito no seguinte artigo da Base de Conhecimento Microsoft:
    251238  (http://support.microsoft.com/kb/251238/ ) Consultas distribuídas retornam Erro 7356 com MSDAORA
  • Mensagem 9
    Erro 7391: A operação foi executada porque o provedor do OLE DB 'MSDAORA' não oferece suporte a distributedtransactions de notbe. Rastreamento de erro de OLE DB [provedor OLE/DB 'MSDAORA' ITransactionJoin::JoinTransaction retornou 0x8004d01b]
    Verificar se as versões theOCI são registradas corretamente conforme descrito anteriormente neste artigo.

    Observação: Se as entradas do registro são corretas, o Mtxoci. dll arquivo isloaded. Se o arquivo Mtxoci. dll não está carregado, você não poderá executar distributedtransactions com a Oracle usando o Microsoft OLE DB Provider for Oracle usando o Driver do Microsoft ODBC para Oracle orby. Se você estiver usando um provedor de terceiros e youreceive erro 7391, verifique se que o provedor OLE DB que você estiver usando transações de supportsdistributed. Se o provedor OLE DB dá suporte distributedtransactions, verifique se que o Coordinator(MSDTC) de transação distribuída da Microsoft está sendo executado.
  • Mensagem 10
    Erro 7392: Não foi possível iniciar o atransaction para o provedor de OLE DB 'MSDAORA'. Rastreamento de erro de OLE DB [Provider'MSDAORA OLE/DB ' ITransactionLocal::StartTransaction retornou 0x8004d013:ISOLEVEL = 4096].
    As informações a seguir são de Manuais Online do SQL Server:
    O provedor OLE DB retornou o erro 7392 porque apenas uma transação pode ser 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 está em uma transação explícita ou implícita, e o provedor OLE DB não dá suporte para transações aninhadas. SQL Server requer esse suporte para que, em determinadas condições de erro, ele pode ser encerrado os efeitos da instrução de modificação de dados enquanto continua com a transação.
    Se SET XACT_ABORT estiver ativado, do SQL Server não requer suporte de nestedtransaction do provedor OLE DB. Portanto, execute SET XACT_ABORT ONbefore executar instruções de modificação de dados em tabelas remotas em animplicit ou transação explícita. Faça isso no caso do provedor OLE DB que você está usando suporte aninhado transações.

Referências

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

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: 
kbsqlsetup kbhowtomaster kbmt KB280106 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.
Clique aqui para ver a versão em Inglês deste artigo: 280106  (http://support.microsoft.com/kb/280106/en-us/ )
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store