Como configurar e resolver problemas de um servidor ligado a uma base de dados Oracle no SQL Server

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

Nesta página

Sumário

Este artigo passo a passo descreve como configurar um servidor ligado de um computador com o Microsoft SQL Server a uma base de dados Oracle e também fornece passos de resolução de problemas básicos para erros comuns que podem ocorrer quando configurar um servidor ligado para Oracle.

Passos para configurar um servidor ligado para Oracle

  1. Tem de instalar o software de cliente Oracle num computador que está a executar o SQL Server onde o servidor ligado é configurado.
  2. Instale o controlador que pretende no computador que está a executar o SQL Server. Microsoft só suporta fornecedor Microsoft OLE DB para Oracle e o controlador de ODBC da Microsoft para Oracle. Se utilizar um fornecedor de terceiros ou um controlador de outro fabricante para ligar a Oracle, terá de contactar o respectivo fornecedor de quaisquer problemas que poderá detectar utilizando o respectivo fornecedor ou controlador.
  3. Se utilizar o fornecedor de Microsoft OLE DB para Oracle e o controlador de ODBC da Microsoft para Oracle, considere o seguinte:
    • Tanto o fornecedor de OLE DB e o controlador ODBC que estão incluídos com o Microsoft Data Access Components (MDAC) requerem SQL * NET 2.3. x ou uma versão posterior. Tem de instalar a Oracle 7.3. x software de cliente, ou uma versão posterior, no computador cliente. O computador cliente é o computador que esteja a executar o SQL Server.
    • Certifique-se que tem o MDAC 2.5 ou posterior, instalado no computador que esteja a executar o SQL Server. Com o MDAC 2.1, ou com uma versão anterior, não é possível ligar a bases de dados que utilizam Oracle 8. x ou uma versão posterior.
    • Para activar o MDAC 2.5 ou versões posteriores trabalhar com Oracle software de cliente, o registo deve ser modificada no computador cliente com o SQL Server como indicado na seguinte tabela.
                 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 com o SQL Server depois de instalar o software de cliente do 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
Nota Se utilizar o controlador de ODBC da Microsoft para Oracle, pode utilizar @ datasrc parâmetro para especificar um nome DSN. Para um DSN - menos ligação, a cadeia de fornecedor é fornecida através de @ provstr parâmetro. Com o Microsoft OLE DB Provider para Oracle, utilizar o alias do servidor Oracle que esteja configurado no ficheiro TNSNames.Ora @ datasrc parâmetro. Para mais informações, consulte o tópico "sp_addlinkedserver" no SQL Server Books Online.

Mensagens de erro comuns e como resolvê-los

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


Pode utilizar um dos seguintes dois métodos para obter informações expandidas sobre qualquer erro que ocorre quando executar uma consulta distribuída.
  • método 1
    No Query Analyzer, execute o seguinte código para activar o sinalizador de rastreamento 7300.
    DBCC Traceon(7300)
  • método 2
    Capture o evento "Erros de OLEDB" que está localizado na categoria de evento de "Erros e avisos" no SQL Profiler. O formato de mensagem de erro é a seguinte:
    Interface::Method falhou com o código hex erro.
    Pode procurar o código de erro hex no ficheiro oledberr.h incluída com o MDAC Software Development Kit (SDK).
Segue-se uma lista das dez mensagens de erro comuns que poderão ocorrer, juntamente com informações sobre como resolver a mensagem de erro.

Nota Se estiver a utilizar o SQL Server 2005, estas mensagens de erro podem ser ligeiramente diferentes. No entanto, os IDs de erro destas mensagens de erro são os mesmos-los no SQL Server 2000. Por conseguinte, pode identificá-los por erro de ID.

Nota Para problemas relacionados com desempenho, procure livros online do SQL Server para o tópico "Optimizar consultas distribuídas".
  • mensagem 1
    Erro 7399: Fornecedor OLE DB '% ls' comunicou um erro. % ls
    Active o sinalizador de rastreamento 7300 ou utilizar SQL Profiler para capturar o evento "Erros de OLEDB" para obter informações de erro expandidas OLEDB.
  • mensagem 2a
    "12154 ORA: TNS: não foi possível resolver serviço nome"
    mensagem 2b
    "Os componentes de cliente e de funcionamento em rede Oracle(tm) não foram encontrados. Estes componentes são fornecidas pela Oracle Corporation e são parte da Oracle versão 7.3.3 (ou superior) a instalação de software de cliente "
    Para obter mais informações sobre como resolver problemas de conectividade do Oracle, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
    259959Técnicas para depurar problemas de conectividade a um servidor Oracle utilizando o controlador ODBC e o fornecedor de OLE DB
  • mensagem 3
    Erro 7302: Não foi possível criar uma instância do fornecedor de OLE DB 'MSDAORA'
    Certifique-se de que o ficheiro MSDAORA.dll está registado correctamente. (O ficheiro MSDAORA.dll é o fornecedor de Microsoft OLE DB para Oracle ficheiro.) Utilize a ferramenta RegSvr32.exe para registar o Microsoft OLE DB Provider para Oracle. Se o registo falhar, reinstale o Microsoft Data Access Components (MDAC). Para mais informações sobre o MDAC, visite o seguinte Web site da Microsoft Developer Network (MSDN):
    http://msdn.microsoft.com/data/Default.aspx
    Nota Se utilizar um fornecedor de Oracle de outros fabricantes e o fornecedor da Oracle não pode executar fora de um processo do SQL Server, Active a que seja executado em processo, alterando as opções de fornecedor. Para alterar as opções de fornecedor, utilize um dos seguintes métodos.
    • método 1
      Localize a seguinte chave de registo. Em seguida, altere o valor da entrada AllowInProcess (DWORD) para 1. Esta chave de registo está localizada no nome do fornecedor correspondente:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
    • método 2
      Defina a opção Permitir InProcess directamente através do SQL Server Enterprise Manager quando adiciona um novo servidor ligado. Clique em Opções de fornecedor e, em seguida, clique para seleccionar a caixa de verificação Permitir InProcess .
  • mensagem 4
    Erro 7303: Não foi possível inicializar o objecto de origem de dados do fornecedor OLE DB 'MSDAORA'. [Fornecedor OLE/DB devolvida a mensagem: 01017 ORA: inválido de nome de utilizador/palavra-passe; início de sessão negado] Rastreio de erro de OLE DB [fornecedor de OLE/DB 'MSDAORA' IDBInitialize::Initialize devolveu 0x80040e4d].
    Esta mensagem de erro indica que o servidor ligado não tem o mapeamento de início de sessão correcto. É possível executar o procedimento sp_helplinkedsrvlogin armazenadas para definir correctamente as informações de início de sessão. Verifique também se especificou os parâmetros correctos para a configuração de servidor ligado.
  • mensagem 5
    Erro 7306: Não foi possível abrir a tabela '% ls' do fornecedor de OLE DB 'MSDAORA'. A tabela especificada não existe. [Fornecedor OLE/DB devolvida a mensagem: tabela não existe.][Fornecedor OLE/DB devolvida a mensagem: 00942 ORA: tabela ou vista não existe] Rastreio de erro de OLE DB [fornecedor de OLE/DB 'MSDAORA' IOpenRowset::OpenRowset devolvido 0x80040e37: A tabela especificada não existe.].
    Erro 7312: Inválida utilização de esquema e/ou catálogo para fornecedor de OLE DB '% ls'. Foi fornecido um nome de quatro partes, mas o fornecedor não expõe as interfaces necessárias para utilizar um catálogo e/ou o esquema.
    Erro 7313: Esquema inválida ou catálogo especificado para fornecedor '% ls'.
    Mensagem 7314: Fornecedor OLE DB '% ls' não contém a tabela '% ls'
    Se receber estas mensagens de erro, uma tabela pode não existir no esquema Oracle ou pode não ter permissões nessa tabela. Certifique-se que o nome do esquema foi escrito utilizando letras maiúsculas. Caso alfabético da tabela e das colunas deve ser tal como especificado nas tabelas de sistema Oracle.

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

    A chamada seguinte mostra se a tabela existe no esquema da Oracle. Esta chamada também mostra o nome da tabela exacta.
    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 de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
    240340Consulta distribuída SQL com Oracle provoca o erro "Não foi possível abrir a tabela"
  • mensagem 6
    Erro 7413: Não foi possível efectuar um login do Windows NT autenticado porque delegação não está disponível.
    Msg 18456, 14 de nível 1 de estado, linha 1 início de sessão falhou para o utilizador ' \ '.
    As seguintes informações estão a partir do SQL Server Books Online:
    Esta mensagem de erro indica que uma consulta distribuída está a ser tentada para um login do Microsoft Windows autenticado sem um mapeamento de início de sessão explícito. Num ambiente do sistema operativo na qual segurança delegação não é suportada, Windows NT autenticados inícios de sessão necessário um mapeamento para um início de sessão remoto e a palavra-passe criada utilizando sp_addlinkedsrvlogin explícito.
  • mensagem 7
    Erro 7354: OLE DB fornecedor 'MSDAORA' fornecido metadados inválidos para a coluna '% ls'. O tipo de dados não é suportado.
    Se receber esta mensagem de erro, poderá tratar o erro é descrito no artigo seguinte da base de dados de conhecimento da Microsoft:
    243027CORRECÇÃO: Coluna numérica Oracle provoca erro 7354
  • mensagem 8
    Erro 7356: OLE DB fornecedor 'MSDAORA' fornecido inconsistente metadados para uma coluna. Informações de metadados foi alteradas em tempo de execução.
    Se a consulta de servidor ligado utiliza uma vista da Oracle, que poderá estar a ocorrer o problema descrito no seguinte artigo da base de dados de conhecimento da Microsoft:
    251238Distribuído consultas devolvem o erro 7356 com MSDAORA
  • mensagem 9
    Erro 7391: A operação não pôde ser executada porque o fornecedor de OLE DB 'MSDAORA' não suporta transacções distribuídas. Rastreio de erro de OLE DB [fornecedor de OLE/DB 'MSDAORA' ITransactionJoin::JoinTransaction devolvido 0x8004d01b]
    Verifique se as versões OCI estão registadas correctamente descritos anteriormente neste artigo.

    Nota Se as entradas de registo estiverem todas correctas, o ficheiro MtxOCI.dll é carregado. Se o ficheiro MtxOCI.dll não é carregado, não pode efectuar transacções distribuídas contra Oracle utilizando o Microsoft OLE DB Provider para Oracle ou utilizando o controlador de ODBC da Microsoft para Oracle. Se estiver a utilizar um fornecedor de terceiros e receber o erro 7391, verifique se o fornecedor OLE DB que está a utilizar suporta transacções distribuídas. Se o fornecedor de OLE DB suportar transacçõ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 transacção para fornecedor de OLE DB 'MSDAORA'. Rastreio de erro de OLE DB [fornecedor de OLE/DB 'MSDAORA' ITransactionLocal::StartTransaction devolvido 0x8004d013: ISOLEVEL = 4096].
    As seguintes informações estão a partir do SQL Server Books Online:
    O fornecedor de OLE DB devolveu o erro 7392 porque apenas uma transacção pode ser activa para esta sessão. Este erro indica que uma instrução de modificação de dados está a ser tentada contra um fornecedor de OLE DB quando a ligação está numa transacção explícita ou implícita, e o fornecedor de OLE DB não suporta transacções aninhadas. SQL Server requer este suporte, de modo a que, em determinadas condições de erro, pode terminar os efeitos da instrução de modificação de dados enquanto continua com a transacção.
    Se SET XACT_ABORT estiver ON, SQL Server não necessita de suporte de transacção aninhada do fornecedor de OLE DB. Por conseguinte, execute SET ON XACT_ABORT antes de executar instruções de modificação de dados contra tabelas remotas numa transacção explícita ou implícita. Efectue este procedimento caso o fornecedor OLE DB que está a utilizar não suporta transacções aninhadas.

Referências

Para obter mais informações, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
244661Limitações do controlador ODBC do Microsoft Oracle e fornecedor de OLE DB
259959Técnicas para depurar problemas de conectividade a um servidor Oracle utilizando o controlador ODBC e o fornecedor de OLE DB
239719Suporte do fornecedor de controlador/OLE DB do Microsoft ODBC para Oracle w.r.t Oracle 8.x
193893Informações sobre como utilizar Oracle com componentes Microsoft Transaction Server e COM +
191168Erro "-2147168246 (8004d00a)" não foi possível inscrever na chamada transacção do objecto de
Para obter mais informações sobre como utilizar um servidor ligado em conjunto com DB2, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
218590Configurar origens de dados para o fornecedor de Microsoft OLE DB para DB2
216428Configurar o controlador de ODBC da Microsoft para DB2

Propriedades

Artigo: 280106 - Última revisão: 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 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL 2005 Server Workgroup
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 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: 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