3

同じサーバー上の2つの別々のデータベースにある2つのテーブルをクエリする必要があるWebアプリケーションを開発しています(今のところクラシックaspを使用しています)。

ITチームから、データベースごとに個別のアプリケーションレベルのログイン/パスワードが与えられました。これは、接続するためのコードで使用されます。

2つのテーブル(各データベースから1つ)をリンクするクエリを作成したいのですが、その方法がよくわかりません。Googleもあまり役に立ちませんでした。

2つの別々のログインがあるため、これを行うには2つの接続を作成する必要があると想定していますが、それぞれのテーブルを使用するクエリを作成するにはどうすればよいでしょうか。

注意点-私たちのITチームは、この段階では2つのデータベースをリンクしません。私は自分が持っているものにかなり固執しています。

あなたが助けることができることを願っています。マット

4

2 に答える 2

2

ITチームがデータベースを分離したい場合は、明らかにデータベースを使用して参加することはできません。

クライアント側の参加を実行する必要があります。Linqはそれを行う簡単な方法ですが、2つのデータセットを持つループも機能します。

于 2012-09-13T09:34:46.260 に答える
1

クロスデータベースクエリの一般的な構文は次のようになります。

SELECT <columns>
  FROM [schema].[table] t1 INNER JOIN
       [databaseName].[schema].[table] t2 ON <condition>

ただし、2005以降を使用している場合は、最初のデータベースに同義語を作成して、2番目のデータベースへの参照がコード全体に散らばらないようにする価値があります(データベース名が後で変更された場合はどうなりますか)。

CREATE SYNONYM [schema].[synonymName] FOR [databaseName].[schema].[table]

次に、クエリは次のようになります。

SELECT <columns>
  FROM [schema].[table] t1 INNER JOIN
       [schema].[synonymName] t2 ON <condition>

最初のデータベースへの接続に使用しているユーザーが2番目のデータベースにアクセスできるように、アクセス許可を適切に設定する必要がある場合があります。ITチームが、同じサーバープリンシパルから両方のデータベースへの関連するアクセスを許可するだけの場合、それを実現するための最良の方法です。あなたが2つの完全に別々のログインを持っていることに固執しているなら、それはひどいです。ただし、データベース間クエリを実行するために「データベースをリンクする」必要はありません。

于 2012-09-13T09:34:59.427 に答える