@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

SQL ServerとDB2 AS/400をつなぎたい

投稿者投稿内容
Wandayu
会議室デビュー日: 2003/11/05
投稿数: 10
投稿日時: 2003-11-05 13:53
こんにちは

現在VB.NETとSQL Server 2000でDBソフトを開発しているのですが
DB2 AS/400のデータを参照してSQL Serverと結合したテーブルを作成したいのです。

SQL Serverへの接続にはOLEDataConnectionを使用しています。
DB2はSQL Serverのリンクサーバーとして設定されています。
しかしリンクサーバーからのデータの取得方法がわかりません。

ODBCDataConnectionを使用した別々の接続なら、AS400からもデータが取れるのですが
SQL Server Books Onlineを見るとHost Integration Server 2000を使用した取得方法は
書いてあるのですが、他に方法はないのでしょうか?
ご存知の方がいましたら教えてください。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-11-06 00:42
Wandayuさん、こんばんは。

引用:

DB2はSQL Serverのリンクサーバーとして設定されています。
しかしリンクサーバーからのデータの取得方法がわかりません。




「Transact-SQL リファレンス」
によれば、
引用:

テーブルまたはビューが、リンク サーバーのローカル サーバー外にある場合は、4 つの部分から成る名前を linked_server.catalog.schema.object の形式で使用します。


とのことです。
4つのパートの内、該当しないものは省略可能で、確か、
SELECT * FROM リンクサーバ名..スキーマ名.テーブル名
というような書式でOKだったはずです。
Wandayu
会議室デビュー日: 2003/11/05
投稿数: 10
投稿日時: 2003-11-06 11:31
きくちゃん さん(?) 
回答ありがとうございます。

早速試してみたのですが、
select * from リンクサーバー名.カタログ.スキーマ.テーブル
で実行したところ

サーバー : メッセージ 7319、レベル 16、状態 1、行 1
OLE DB プロバイダ 'MSDASQL' は無効なブックマーク序数 0 を持つ 'NON-CLUSTERED and NOT INTEGRATED' インデックス 'テーブル名' を返しました。
OLE DB エラー トレース [Non-interface error: OLE/DB provider returned an invalid bookmark ordinal from the index rowset.]。
というエラーが返ってきました。

リンクサーバーの設定ではドライバに
OLE DB Provider for ODBCを使用し
製品名(OLE DB データソース)にデフォルトのMSDASQL
データソースに「クライアント・アクセス Windows エクスプレス 版 ODBC データ・ソース」で作成したODBC
を設定しています。
テーブル名の参照はできるのですが、設定が間違っているのでしょうか?
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-11-06 12:08
Wandayuさん、こんにちは。

引用:

select * from リンクサーバー名.カタログ.スキーマ.テーブル


DB2って、カタログ名ってあるんでしたっけ?

エラーの意味するところは、ちょっと良く判りませんが、試しに「IBM OLE DB Provider for DB2 Servers」を使用するリンクサーバを、新たに設定してみてはどうでしょうか。
但しこの場合、DB2クライアントソフトウェアに最新のFixPackが適用されていないと、まともに動作しなかったりするかも知れません。
Wandayu
会議室デビュー日: 2003/11/05
投稿数: 10
投稿日時: 2003-11-06 15:06
きくちゃんさん
回答ありがとうございます。

>DB2って、カタログ名ってあるんでしたっけ?
DB2のことはよくわからないのですが、リンクサーバーのテーブルを参照すると
カタログ欄に見覚えのないカタログ名が書いてあったのでそれを使用しました。


>試しに「IBM OLE DB Provider for DB2 Servers」を使用するリンクサーバを、新たに設定してみてはどうでしょうか。

「IBM OLE DB Provider for DB2 Servers」ですが
プロバイダ名にないので選べません。
IBMのサイトを探したのですが見つかりませんでした
どういったものなのでしょうか?

DB2に疎いものですいません・・・
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-11-06 20:58
Wandayuさん、こんばんは。
引用:

「IBM OLE DB Provider for DB2 Servers」ですが
プロバイダ名にないので選べません。
IBMのサイトを探したのですが見つかりませんでした
どういったものなのでしょうか?



私も、DB2についてそれほど詳しいわけではありませんが、DB2クライアントソフトウェアに含まれています。
もしかすると、インストールする際に選択するようになっていたかも知れません。
Wandayu
会議室デビュー日: 2003/11/05
投稿数: 10
投稿日時: 2003-11-07 18:29
きくちゃんさん、こんにちは
無事解決しました。

原因はClient AccessでV4R5用のものを使っていたことでした。
iSeries Access for WindowsのV5R2用にアップデートしたところ、
IBM DB2 UDB For iSeries OLE DB Providerが使用可能になりました。


select文も問題なく通ります。
ありがとうございました。


makoto
常連さん
会議室デビュー日: 2004/05/05
投稿数: 40
投稿日時: 2005-02-08 16:32
DBmoto(旧DB2motion)

http://www.climb.co.jp/soft/hitsw/products/index.html#02

スキルアップ/キャリアアップ(JOB@IT)