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
@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:
EXEC sp_addlinkedsrvlogin
@rmtsrvname = ‘ORA’,
@useself = ‘FALSE’,
@rmtuser = ‘orausr’,
@rmtpassword = ‘orapass’
GO
@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’)
Salvou o dia heim ! vlw