sp_addlinkedserver
を使用する必要があります サーバーリンクを作成します。使用法については、リファレンスドキュメントを参照してください。サーバーリンクが確立されたら、データベース名の前に他のサーバーを追加するだけで、通常どおりクエリを作成します。 I.E:
-- FROM DB1
SELECT *
FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2
ON tab1.ID = tab2.ID
リンクが確立されたら、OPENQUERY
を使用することもできます リモートサーバーでSQLステートメントを実行し、データのみを転送します。これは少し速くなる可能性があり、リモートサーバーがクエリを最適化できるようになります。 DB1
の一時(またはメモリ内)テーブルにデータをキャッシュする場合 上記の例では、標準のテーブルを結合するのと同じようにクエリを実行できます。例:
-- Fetch data from the other database server
SELECT *
INTO #myTempTable
FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]')
-- Now I can join my temp table to see the data
SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID
その他の例については、OPENQUERYのドキュメントを確認してください。上記の例はかなり工夫されています。この特定の例では間違いなく最初の方法を使用しますが、OPENQUERY
を使用する2番目のオプション クエリを使用して一部のデータを除外すると、時間とパフォーマンスを節約できます。