***MS SQLServerのリンクサーバ機能 [#r9af2f72] MSSQLを中心として、他のMSSQL/ODBCソース/IndexesServiceらを繋げてひとつのSQL文が実行できるみたい。 過去、perlでDBI/DBDを駆使して、他所からデータを配列/ハッシュに入れ込んで、それらを繋げていた。 まぁーそれが一筆書きなSQL文で達成できるそうな。 #code(SQL,nomenu,nonumber,noicon){{ SELECT MS.F1, ORA.VALUE1 FROM MSSQL.テーブルA MS, ORACLE.テーブルB ORA MSSQL.テーブルA MS, ORACLE.テーブルB ORA WHERE MS.F1 = ORA.F1 }} な感じで。 っで、ORACLEとの連携を調べた。 ***検証 [#b947c0ab] |BGCOLOR(yellow):MSSQL|BGCOLOR(yellow):ORACLE|BGCOLOR(yellow):結果|BGCOLOR(yellow):備考| |MSSQL2005 32bit|ORACLE10g 10.2.0.1 32bit ''standard''| ok (MSDAORA)|EXEC sp_addlinkedserver&br;@server = N'ORA'&br;,@provider=N'MSDAORA'&br;,@srvproduct=N'Oracle'&br;,@datasrc=N'ORCL'| |MSSQL2005 32bit|ORACLE''11g'' 11.2 32bit express| X (MSDAORA)|| |MSSQL2008R2 64bit&br;Express with Advanced Services|ORACLE''11g'' 11.2 32bit express|X|MSSQLでMicrosoft OLE DB Provider for Oracle(MSDAORA)が提供されていない| |MSSQL2008R2 64bit&br;Express with Advanced Services|ORACLE''11g'' 11.2 32bit express &color(red){+ ODAC 64bit};|ok (OraOLEDB.Oracle)|| &color(red){*ORACLE11g expressは無償版であるが、windowsでは32bit版しか提供されていない}; MSSQL2008R2 Expressでの初期プロバイダーリスト。 &ref(2012y07m03d_212222713.png,wrap,nolink);ORACLEインストール後、&ref(2012y07m03d_213253187.png); と変化はない。&color(green){*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環境変数に加えます。 するとプロバイダーが一つ追加されます。 &ref(2012y07m03d_223812105.png,nolink); 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)))' &color(green){*単に@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 &ref(2012y07m03d_225514817.png,nolink); ***他のリンクサーバ [#q058a86e] 過去、IndexesServiceのプロバイダー(Microsoft OLE DB Provider for Indexing Service)を使った LinkedServerは全文検索に有効だったが、いまやWindowsSerchに。 っで、このWindowsSerchは同じくプロバイダー(Microsoft OLE DB Provider for Search)があって、 リンクサーバ設定画面に表示されるのだが、正しく機能してくれない。 vbsとかからは問題なく使えるのだが....