メモ
作業は全てSQLServerでの作業
対象がDB2 for iの場合
IBM i Access for Windowsをインストールし、
IBM DB2 for i IBMDASQL OLE DB Providerを入れる
対象がDB2 for windowsの場合
IBM Data Server Clientをインストールし、
IBM OLE DB Provider For DB2を入れる
MSDTCを有効化
サービス(Distributed Transaction Coordinator)を起動
プロバイダに対する設定
プロバイダーの設定からInProcess許可を有効化
対象が
DB2 for iの場合:IBMDASQL
DB2 for windowsの場合:IBMDADB.xxxx
リンクサーバーの作成
ページ | 項目 | 設定値(For i) | 設定値(For Windows) |
---|---|---|---|
全般 | リンクサーバー | 任意 | 同左 |
サーバーの種類 | その他のデータソース | 同左 | |
プロバイダー | IBM DB2 for i IBMDASQL OLE DB Provider | IBM OLE DB Provider For DB2 - xxxxx | |
製品名 | Oracle | 任意? | |
データソース | サーバIPアドレス | データベース名 | |
プロバイダー文字列 | 空 | OleDbReturnCharAsWChar=0 | |
場所 | ー | サーバIPアドレス | |
セキュリティ | ローカルサーバーのログインとリモートサーバーのログインのマッピング | なし | 同左 |
上記一覧で定義されないログインの接続方法 | このセキュリティコンテキストを使用する | 同左 | |
リモートログイン | DB2接続時のユーザー名 | 同左 | |
パスワード | DB2接続時のパスワード | 同左 | |
サーバーオプション | RPC | True | 同左 |
RPC出力 | True | 同左 |
リンクサーバーを作成し、オプションを以下の通り変更
RPC:True
RPC出力:True
UPDATE
トリガー追加
ALTER trigger [dbo].[onInsertTable1] ON [dbo].[View_DB2_Table1]
instead of insert
as
begin
SET XACT_ABORT ON
exec ('SET TRANSACTION ISOLATION LEVEL NO COMMIT') AT DB2
insert into DB2.instanceName.schemeName.Table1 select * from inserted
end
参考:https://technet.microsoft.com/ja-jp/library/ms188332(v=sql.105).aspx
リンクサーバーのデータを更新:http://going-my-way-on-job.cocolog-nifty.com/blog/2005/06/post-f6a4.html
分散トランザクション:http://ponyoth.hateblo.jp/entry/2015/08/27/141022
DB2のリンクサーバー:http://ino1970.blog119.fc2.com/blog-entry-202.html
DB2からのSELECTでデータ長が合わない(Error: Msg 7347):http://www-01.ibm.com/support/docview.wss?uid=swg21474177