Compartilhar via


Provedor Oracle para OLE DB

O Oracle Provider for OLE DB (8.1.7.3.0) permite consultas distribuídas em dados em bancos de dados Oracle. O suporte ao Oracle Provider for OLE DB é o seguinte:

Oracle de 32 bits

Apenas fora de processo

Oracle de 64 bits

Nenhum

Para criar um servidor vinculado para acessar uma instância do banco de dados Oracle

  1. Verifique se o software cliente Oracle no servidor que está executando o MicrosoftSQL Server está no nível requerido pelo provedor. O Oracle Provider for OLE DB (8.1.7.3.0) requer o Oracle Client 8.1.7.0.

  2. Crie um nome de alias do servidor que está executando o SQL Server que aponta para uma instância do banco de dados Oracle. Para obter mais informações, consulte a documentação do Oracle.

  3. Execute sp_addlinkedserver para criar o servidor vinculado, especificando OraOLEDB.Oracle como provider_name, e o alias do banco de dados Oracle como data_source.

    O exemplo a seguir assume que o alias foi definido como DQORA8:

    exec sp_addlinkedserver @server='OrclDB', 
        @srvproduct='Oracle',
        @provider='OraOLEDB.Oracle', 
        @datasrc='DQORA8'
    
    Observação sobre segurançaObservação sobre segurança

    Este exemplo não usa a Autenticação do Windows. As senhas serão transmitidas descriptografadas. As senhas podem ser visíveis em definições de fonte de dados e scripts salvos em disco, em backups e em arquivos de log. Nunca use uma senha de administrador nesse tipo de conexão. Consulte o administrador da rede para obter orientações sobre segurança específicas a seu ambiente.

  4. Use sp_addlinkedsrvlogin para criar mapeamentos de logons do SQL Server para logons do Oracle.

    O exemplo a seguir mapeia o logon Joe do SQL Server para o servidor vinculado definido na etapa 3 usando o logon e a senha do Oracle OrclUsr e OrclPwd.

    sp_addlinkedsrvlogin @rmtsrvname = 'OrclDB', 
       @useself = 'false', 
       @locallogin = 'Joe', 
       @rmtuser = 'OrclUsr', 
       @rmtpassword = 'OrclPwd'
    

Ao fazer referência a tabelas em um servidor vinculado Oracle, use estas regras:

  • Se os nomes da tabela e da coluna foram criados no Oracle sem identificadores entre aspas, use todos os nomes em letras maiúsculas.

  • Se os nomes da tabela e da coluna foram criados no Oracle com identificadores entre aspas, use as mesmas letras maiúsculas e minúsculas usadas quando os nomes foram criados no Oracle.

  • Instruções INSERT devem fornecer valores para todas as colunas em uma tabela, mesmo que determinadas colunas da tabela sejam NULL ou tenham valores padrão.

  • Este provedor não oferece suporte à passagem direta de literais de datetime como argumentos no seguinte formato:

    EXEC 'string' '<datetime-literal>' AT <oraclelinkedserver>
    

    Por exemplo, não há suporte para o seguinte uso da literal datetime'14-sep-94':

    EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) 
       VALUES (?, ?, ?, ?)', '6380', '6871', '14-sep-94', 5) AT OrclDB
    

    Em vez disso, crie uma variável datetime, atribua um valor literal a ela e chame EXEC com a variável como o argumento:

    DECLARE @v1 datetime
    SET @v1 = CONVERT(datetime,'14-sep-94')
    EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) 
       VALUES (?, ?, ?, ?)', '6380', '6871', @v1, 5) AT OrclDB
    

Restrições

O SQL Server não oferece suporte ao uso da função de agregação AVG em relação a tabelas do Oracle porque o provedor Oracle retorna o tipo OLE DB DBTYPE_VARNUMERIC. O SQL Server não oferece suporte a DBTYPE_VARNUMERIC. Por exemplo, o seguinte código retorna um erro:

SELECT AVG(QTY)
FROM ORA..RPUBS.SALES

Para evitar o erro, use OPENQUERY. Por exemplo:

SELECT *
FROM OPENQUERY(ORA,
   'SELECT CAST (AVG(QTY) AS numeric)
   FROM ORA..RPUBS.SALES')

Entradas do Registro

Para permitir que o OLE DB Provider for Oracle funcione com o software cliente Oracle, o Registro do cliente deve ser modificado executando um arquivo de Registro em uma linha de comando. Não é possível executar várias instâncias do software cliente ao mesmo tempo. Esses arquivos são listados na tabela a seguir e estão localizados na mesma estrutura de diretórios que contém a instalação do Microsoft Data Access Component (MDAC). Normalmente essa localização é C:\Arquivos de Programas\Arquivos Comuns\Arquivos do Sistema\OLE DB.

Cliente Oracle

Windows NT ou 9x

Windows 2000

7.x

mtxoci7x_winnt.reg

mtxoci7x_win2k.reg

8.0

mtxoci80_winnt.reg

mtxoci80_win2k.reg

8.1

mtxoci81_winnt.reg

mtxoci81_win2k.reg