- PR -

別のデータベースのテーブルを使用するストアドプロシージャ

1
投稿者投稿内容
ともこ
大ベテラン
会議室デビュー日: 2007/09/14
投稿数: 111
投稿日時: 2007-09-14 19:20
現在、SQLサーバー(A)にストアドプロシージャを作成しようと考えています。その際、SELLECT文に使用するテーブルを別のSQLサーバー(B)のテーブルにしたいのですが、こういった事は実現可能でしょうか?

何故このような事を考えているかと言うと、Bのサーバーは社内の基幹システムで利用しており、極力SQLサーバー自体に手を加えたくない為です。その為、ユーザーのクライアントPCからAのストアドプロシージャを実行して、AのストアドプロシージャでBのデータを取得したいのです。

どなたかアドバイスがありましたらお願いします。
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2007-09-14 20:18
さかもとと申します。
(MS-SQLであれば)

過去スレ

でこのようなものがありましたが、いかがでしょうか?



_________________
------------------------------------------
拝啓、さかもとと申します。

[ メッセージ編集済み 編集者: さかもと 編集日時 2007-09-14 20:19 ]
ともこ
大ベテラン
会議室デビュー日: 2007/09/14
投稿数: 111
投稿日時: 2007-09-14 21:25
さかもとさん、レスありがとうございます!

「リンクサーバー」、「OPENROWSET」と初めて聞く単語ばかりでまだよく理解できてません。少し調べてみようと思います!他にも何か方法がありましたら宜しくお願いします。
ともこ
大ベテラン
会議室デビュー日: 2007/09/14
投稿数: 111
投稿日時: 2007-09-18 13:16
現在、頂いたアドバイスを元にSQLサーバー2000のEnterpriseManagerにて以下の条件でリンクサーバーを設定したいと考えています。

 ・リンクサーバーを作成するSQLサーバー(A)
 ・リンク先のSQLサーバー(B)
 ・(B)のサーバー内の参照したいデータベース名(C)

この場合、リンクサーバーを作成する際に指定する項目として、
 @リンクサーバー名:(B)
 Aサーバーの種類:SQL Server
として設定したところ、
(B)のデータベースへのリンクサーバーは作成されましたが、(C)のデータベースの情報が取得できていません。また、(B)のデータベースのビューとテーブルはカタログが「master」となっています。

リンクサーバー作成時には、SQLサーバー名以外にもデータベース名(カタログ名)も必要なのでしょうか?
どなたか対応方法についてご存知の方はアドバイスをお願いします。
ともこ
大ベテラン
会議室デビュー日: 2007/09/14
投稿数: 111
投稿日時: 2007-09-18 16:48
自己レスです。

リンク先のSQLサーバー名は「SAPR3T」です。「SAPR3T」の中に「R3T」というデータベースがあります。
現在は「SAPR3T」内の「MASTER」のテーブルへのみアクセスできデータも取得できています。

やはり、データベース名を直接指定してリンクサーバーを作成するには、サーバーの種類は「SQLサーバー」ではダメで、「MICROSOFT OLE DB Provider for ODBC Drivers」など別のプロバイダを指定する必要があるのでしょうか?

もう考えが煮詰まってしまっており困っています。
ともこ
大ベテラン
会議室デビュー日: 2007/09/14
投稿数: 111
投稿日時: 2007-09-18 18:06
またまた自己レスです。

問題、解決しました。

リンクサーバー上に表示されるテーブルやビューのカテゴリは「MASTER」のみで自分の照会したいデータベースには接続できないと勘違いしていましたが、
クエリアナライザで、「サーバー名.データベース名.スキーマ名.テーブル名」を指定して実行したところ正常に出力結果を取得できました。

何故私が勘違いをしていた理由として、クエリアナライザで指定するテーブル名が小文字になっていた為に、「指定したテーブルは存在しません!」といったエラーが返ってきていました。お騒がせしました。
1

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