***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とかからは問題なく使えるのだが....
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS