Il blog di Sandro Rizzetto

Aggiungere un Linked Server Oracle a un Ms-Sql2008 x64 su Win2008 Srv x64

 

Mentre in passato non avevo difficoltà a creare dei Linked Server su versioni a 32bit di Sql Server che giravano su sistemi operativi sempre a 32bit (es sql2005 su win2003), l’accoppiata x64 di Sql e OS oggi mi ha fatto un po’ penare. Riporto qui i passi per mia memoria e se serve a qualcuno.

Innanzittutto bisogna installare il client Oracle a 64bit (io ho usato la 11.1 scegliendo la voce Administration –700 e passa Mb - in quanto solo con l’Instant Client non andava), editare sqlnet.ora e tnsnames.ora con i propri parametri e accertarsi che tutto funzioni correttamente (io di solito lo faccio creando un file .udl e testando la connessione).

Anche se non richiesto un bel riavvio del server a questo punto ci vuole.

Come è noto è possibile usare due provider OleDB diversi: quello Oracle che si installa con il client (OraOLEDB.Oracle) oppure quello Microsoft (MSDAORA) che si trovava nel pacchetto MDAC di antica memoria. Pur avendo in passato prediletto quest’ultimo non sono riuscito (velocemente) a trovare il provider Ms a 64bit ed ho quindi optato per quello Oracle.

L’ultimo scoglio restava in sibillini messaggi di errore quando tentavo una query o una semplice enumerazione delle tabelle.

Il workaround è settare a true due parametri del Provider prima di creare i linked server:

EXEC master.dbo.sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'DynamicParameters', 1
GO

Successivamente basta eseguire gli script Sql per la creazione e per la security (che potrebbe essere diversa da quanto sotto secondo le esigenze):

EXEC master.dbo.sp_addlinkedserver @server = N'OracleLinkedSrv', @srvproduct=N'Oracle', @provider=N'OraOLEDB.Oracle', @datasrc=N'YOURSERVERNAME'
GO
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'OracleLinkedSrv',@useself=N'False',@locallogin=NULL,@rmtuser=N'yourusername',@rmtpassword='yourpwd'
GO

E adesso posso fare query eterogenee anche su Sql2008 x64…

Aggiungi Commento

Copyright © 1997-2017 Sandro Rizzetto | All Rights Reserved | Riproduzione delle fotografie vietata | Powered by me