MSSQLを中心として、他のMSSQL/ODBCソース/IndexesServiceらを繋げてひとつのSQL文が実行できるみたい。
過去、perlでDBI/DBDを駆使して、他所からデータを配列/ハッシュに入れ込んで、それらを繋げていた。
まぁーそれが一筆書きなSQL文で達成できるそうな。
|
な感じで。
っで、ORACLEとの連携を調べた。
MSSQL | ORACLE | 結果 | 備考 |
MSSQL2005 32bit | ORACLE10g 10.2.0.1 32bit standard | ok (MSDAORA) | EXEC sp_addlinkedserver @server = N'ORA' ,@provider=N'MSDAORA' ,@srvproduct=N'Oracle' ,@datasrc=N'ORCL' |
MSSQL2005 32bit | ORACLE11g 11.2 32bit express | X (MSDAORA) | |
MSSQL2008R2 64bit Express with Advanced Services | ORACLE11g 11.2 32bit express | X | MSSQLでMicrosoft OLE DB Provider for Oracle(MSDAORA)が提供されていない |
MSSQL2008R2 64bit Express with Advanced Services | ORACLE11g 11.2 32bit express + ODAC 64bit | ok (OraOLEDB.Oracle) |
*ORACLE11g expressは無償版であるが、windowsでは32bit版しか提供されていない
MSSQL2008R2 Expressでの初期プロバイダーリスト。
ORACLEインストール後、
と変化はない。*Search.CollatorDSOはWindowsSearchを入れると追加される
ODAC 64bitのインストールは、まず、ダウンロードした ODAC112030Xcopy_x64.zip を C:\tmp などで展開させ
C:\TEMP\ODAC112030Xcopy_x64 とする。その後、コマンドプロンプトを起動させ、このフォルダー内で
install oledb c:\oracle xe
としてc:\oracleへODACをインストール。その後、c:\oracleとc:\oracle\binをPATH環境変数に加えます。
するとプロバイダーが一つ追加されます。
OraOLEDB.Oracle:Oracle Provider for OLE DB
このOraOLEDB.Oracleを使ってリンクサーバを作成します。
EXEC sp_addlinkedserver
@server = 'OracleLink',
@srvproduct = 'Oracle',
@provider = 'OraOLEDB.Oracle',
@datasrc = '(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST =ORACLE-Server)(PORT = 1521))(CONNECT_DATA=(SERVER =DEDICATED)(SERVICE_NAME = XE)))'
*単に@datasrc = 'XE'でも可。その際、TNS_ADMIN 環境変数でtnsnames.oraの指定が必要かも
GO
Exec sp_serveroption 'OracleLink' , 'rpc' , TRUE
GO
Exec sp_serveroption 'OracleLink' , 'data access' , TRUE
GO
Exec sp_serveroption 'OracleLink' , 'rpc out' , TRUE
GO
SELECT * FROM OracleLink..SCOTT.EMP
GO
過去、IndexesServiceのプロバイダー(Microsoft OLE DB Provider for Indexing Service)を使った
LinkedServerは全文検索に有効だったが、いまやWindowsSerchに。
っで、このWindowsSerchは同じくプロバイダー(Microsoft OLE DB Provider for Search)があって、
リンクサーバ設定画面に表示されるのだが、正しく機能してくれない。
vbsとかからは問題なく使えるのだが....