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
Verifique se o software cliente Oracle no servidor que está executando o Microsoft SQL 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.
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.
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ç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.
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 |
Consulte também