LoginSignup
0
0

More than 3 years have passed since last update.

SQLServerからDB2にリンクサーバを経由のViewでSELECT、UPDATEする

Last updated at Posted at 2019-11-14

メモ

作業は全て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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0