none
別々のデータベースに対する結合処理 RRS feed

  • 質問

  • SQL Server2000、2005で開発しています。

     

    別々のデータベースに対する結合した結果を取得したいのですが、

    可能でしょうか?

    もし可能であれば、どのような処理を記述したら良いか教えて頂きたいです。

     

    よろしくお願いいたします。

     

    2008年4月17日 12:06

回答

  • SQLで解決するのであれば[サーバー名].[データベース名].[オーナー名].[テーブル名]のように記載できます。

    たとえば以下のような感じです。(手打ちなので間違いがあるかもしれません)

     

    select t1.key1, t1.data1, t2.key1, t2.data2 from [SV1].[DB1].[dbo].[table1] t1

    inner join [SV2].[DB2].[dbo].[table2] t2 on t1.key1 = t2.key1

     

    後は、リンクサーバを使う方法がありますが、環境によっては、どちらもパフォーマンスがでない事があります。

     

    2008年4月17日 14:53
  •  simpleplan_xxx さんからの引用

    これはGENZ0さんのおっしゃる「リンクサーバー」を設定しなければならないということなのでしょうか?

    はい。

     

    リンクサーバーを設定するか、OPENROWSET関数を使用する方法もあります。

    詳しくは、Books Onlineを参照してください。

    2008年4月18日 6:05

すべての返信

  • SQLで解決するのであれば[サーバー名].[データベース名].[オーナー名].[テーブル名]のように記載できます。

    たとえば以下のような感じです。(手打ちなので間違いがあるかもしれません)

     

    select t1.key1, t1.data1, t2.key1, t2.data2 from [SV1].[DB1].[dbo].[table1] t1

    inner join [SV2].[DB2].[dbo].[table2] t2 on t1.key1 = t2.key1

     

    後は、リンクサーバを使う方法がありますが、環境によっては、どちらもパフォーマンスがでない事があります。

     

    2008年4月17日 14:53
  • ありがとうございます。

    同一サーバー内のデータベースに対してはテーブルの結合ができました。

    とても嬉しいです。

     

    ただ別サーバーに対してSQLを実行すると下記のエラーメッセージが

    表示されてしまいました。

    ≪サーバー名≫はサーバーの名前が表示されています。

    sysservers にサーバー '≪サーバー名≫' が見つかりませんでした。sp_addlinkedserver を実行して、サーバーを sysservers に追加してください。

     

    これはGENZ0さんのおっしゃる「リンクサーバー」を設定しなければならないということなのでしょうか?

    もしよろしければ、こちらも教えて頂けませんか?

    よろしくお願いいたします。

    2008年4月18日 3:59
  •  simpleplan_xxx さんからの引用

    これはGENZ0さんのおっしゃる「リンクサーバー」を設定しなければならないということなのでしょうか?

    はい。

     

    リンクサーバーを設定するか、OPENROWSET関数を使用する方法もあります。

    詳しくは、Books Onlineを参照してください。

    2008年4月18日 6:05
  • ありがとうございます。

    とても勉強になりました。

     

    OPENROWSET関数ではユーザー名とパスワードをSQLに記載しなければ

    ならないようですので、リンクサーバーで対応しようと思います。

     

    調べてみましたが、ちょっと理解できない部分もあり苦戦しておりますが、

    もう少しがんばってみようと思っています。

     

    ご回答、ありがとうございました。

    2008年4月19日 3:03
  • リンクサーバについて、誤解していたようです。

    フォローありがとうございます。>かめたろさん

    2008年4月19日 13:51