3

server1 に 1 つの table1 があり、server2 に別の table2 があるインライン クエリがあります。これら 2 つのテーブルを結合し、データを取得する必要があります。

あるサーバーに接続してデータを取得し、次のサーバーに接続してデータをフェッチするなど、これを行うことができます。それらに参加します。

しかし、他に良い方法はありますか。リンクサーバーについて聞いたことがあります。それはここで役立ちますか?

前もって感謝します !!!

4

1 に答える 1

5

はい、一方のサーバーから他方のサーバーへのリンク サーバーをセットアップします。次に、結合を使用して通常のクエリを実行できます。次のようになります。

SELECT t1.Col1
    ,  t2.ColA
FROM server1Table t1
INNER JOIN SERVER2.dbname.dbo.tableName t2 ON t1.TheId = t2.TheId

これは、Server1 でクエリを実行していることを前提としています。[servername].[dbname].[schema].[table] を使用して 2 つのリンク サーバーを参照し、SQL で通常どおり使用することもできます。

または、 OPENROWSETを使用することもできます(ただし、設定できる場合は、リンク サーバーが最も簡単です)。OpenRowSet は次のようになります。

SELECT t1.Col1
    ,  t2.ColA
FROM server1Table t1
INNER JOIN  OPENROWSET('SQLNCLI', 'Server=Server2;Trusted_Connection=yes;',
                       'SELECT t2.ColA, t2.TheId FROM dbname.dbo.tableName') AS t2
  ON t1.TheId = t2.TheId

そして、あたかもローカルテーブルであるかのように「a」に参加できます。内部ではおそらくすべてのデータがローカル データベースに取り込まれているため、内部クエリに WHERE を追加して行を制限し、必要な列のみを取得することを検討する必要があります。

于 2010-10-12T19:32:09.797 に答える