Linked server com Oracle

Lembre-se de substituir 127.0.0.1 pelo IP que roda o servidor Oracle XE. O driver OraOLEDB.Oracle acompanha o pacote Oracle Developer Tools for Visual Studio.

A SP add_linkedserver abaixo funciona para o Oracle XE:

EXEC sp_addlinkedserver @server = ‘ORA’, @srvproduct = ‘Oracle’, @provider = ‘OraOLEDB.Oracle’, @datasrc = ‘(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)))’ GO
É necessário também ticar a opção Allow inprocess nas propriedadas do *provider*. É possível acessar os provedores em:
*Server Objects* → *Linked Servers* → *Providers*
Depois é só configurar um usuário e senha para o *Linked Server* gravado através da SP [sp_addlinkedsrvlogin](http://msdn.microsoft.com/en-us/library/ms189811.aspx):
EXEC sp_addlinkedsrvlogin @rmtsrvname = ‘ORA’, @useself = ‘FALSE’, @rmtuser = ‘orausr’, @rmtpassword = ‘orapass’ GO
Note que no MSSQL2005 há um problema referente aos campos *number* no Oracle e *int* no MSSQL. O provedor não consegue fazer a conversão, lançando um erro de conversão para *numeric*. Já no SQL2008 parece funcionar. As consultas podem ser realizadas através do comando openquery:
SELECT * FROM openquery(ORA, ‘SELECT * FROM TABELA’)