0

複数のサーバー上の複数のデータベースを使用するasp.netアプリケーションがあります。次に、異なるサーバー上の2つのデータベースから2つのテーブルを結合する必要があります。

2つの接続文字列を使用していますが、何を書く必要がありますか?

query = select studentcode,mobile 
        from learning.dbo.students 
        where stcode in (select stcode from hs.dbo.currentetrm)

Dim ds As New DataSet()
ad.Fill(ds)

GridView1.DataSource = ds
GridView1.DataBind()

learningは、独自のログインを持つ1つのサーバー上の1つのhsデータベースであり、別のログインを持つ別のデータベースです。

4

4 に答える 4

1

2つの接続文字列を使用せずに、ASP.NET内からこれを実行することはできません。

これを実現する1つの方法は、これらのデータベースをリンクサーバーとして設定することです。これにより、1回のログインを使用してサーバーの1つでクエリを実行し、リンクサーバーを介してそこで結合を実行できます。

于 2012-10-02T19:55:41.550 に答える
1

リンクされたサーバーがない場合、単一のクエリでこれを行うことはできませんが、サーバーを個別にクエリしてから、.NETコードの2番目のテーブルの値に基づいて最初のテーブルをフィルタリングできます。

于 2012-10-02T21:17:48.367 に答える
0

編集:要するに、あなたはそうすることができますが、それらはリンクされなければなりません:Odedの答えを見てください。

要するに、あなたはできません。

SQLクエリは、単一のSQLサーバーによって処理および実行されます。これは、1つのクエリが2つの異なるサーバー上の2つのテーブルを結合できないことを意味します。

状況によっては、あるサーバーから別のサーバーにテーブルをインポートしてから、そのサーバーでクエリを実行することをお勧めします。したがって、問題は「なぜ2つの別々のサーバーに関連データがあるのですか?」です。

于 2012-10-02T19:54:35.750 に答える
0

2つのオプションがあります:

  1. リンクサーバーを使用して、単一の接続文字列ですべてを実行できるようにします。
  2. 2つの接続を使用して、データをアプリケーション側(C#)に移動します。両方のデータセットが同じ場所にあるので、必要なロジックを適用できます。
于 2012-10-02T22:15:06.350 に答える