Antes de tudo é necessário instalar os drivers ODBC do PostGreSQL no servidor em que se encontra o MS SQL Server.
Depois registre um System DSN, ou Fonte de Dados do Sistema. Para isto basta se encaminhar para:
Painel de Controle → Ferramentas Administrativas → Fontes de Dados ODBC.
Basta preencher as caixinhas e depois testar. Com a conexão funcionando, agora é hora de se criar um Linked Server entre o MS SQL Server e o PostGreSQL.
EXEC master.dbo.sp_droplinkedsrvlogin
@rmtsrvname=N'LINKEDSERVERNAME'
, @locallogin=NULL
EXEC master.dbo.sp_dropserver
@server = 'LINKEDSERVERNAME'
EXEC master.dbo.sp_addlinkedserver
@server = 'LINKEDSERVERNAME'
, @provider = 'Postgresql OLE DB'
, @datasrc = 'Postgresql ANSI'
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'LINKEDSERVERNAME'
, @useself=N'False'
, @locallogin=NULL
, @rmtuser='usuariopostgres'
, @rmtpassword='senhapostgres'
Agora você pode fazer consultas assim:
SELECT * FROM openquery(LINKEDSERVERNAME, 'SELECT * FROM TABELADOPOSTGRES')
Muito bom o post, mas para mim não está funcionando.
da o seguinte erro:
–
Server: Msg 7403, Level 16, State 1, Line 1
Could not locate registry entry for OLE DB provider ‘Postgresql OLE DB’.
OLE DB error trace [Non-interface error: Provider not registered.].