[解決済み] 異なるサーバーにある2つのデータベースの2つのテーブルを結合してデータを問い合わせる
2022-08-28 12:18:16
質問
異なるサーバー上の2つのデータベースに2つのテーブルがあり、私はいくつかのクエリを作成するためにそれらを結合する必要があります。どのようなオプションがありますか?私は何をすべきですか?
どのように解決するには?
この問題を解決するには
sp_addlinkedserver
を使用してサーバーリンクを作成します。 を参照してください。
の参照ドキュメント
を参照してください。 サーバーのリンクが確立したら、データベース名の前にもう一方のサーバーを付けるだけで、通常通りクエリを作成します。 すなわち
-- 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
をチェックアウトして
のドキュメントを参照してください。
のドキュメントを参照してください。 上の例はかなり作為的なものです。 私なら、この具体的な例では間違いなく最初の方法を使いますが、2番目の方法として
OPENQUERY
を使用すると、いくつかのデータをフィルタリングするためにクエリを使用する場合、いくつかの時間とパフォーマンスを節約することができます。
関連
-
MySQL - ストアドプロシージャ (データ型、関数)
-
[解決済み] データベース内の全テーブルのサイズを取得する
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] 最初の行への結合方法
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] AndroidでSQLiteを使用する際に、並行処理の問題を回避するにはどうすればよいですか?
-
[解決済み] SQL Server の "with (nolock)" とは何ですか?
-
[解決済み] SQLクエリは、複数のテーブルからデータを返す
-
[解決済み] SQL ServerでGROUP BYを使って文字列を連結する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQL Server FOR EACH ループ
-
[解決済み] SQLの結合形式 - 入れ子になった内側join
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] SQL Serverでストアドプロシージャ内のテキストを検索する
-
[解決済み] 各グループの上位1行を取得
-
[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
-
[解決済み] SQL Server の CASE ステートメントで OR がサポートされていない。
-
[解決済み] SQL Serverには、.NETのMath.Maxのような2つの値を取るMax関数はありますか?
-
[解決済み] フラットテーブルをツリーにパースする最も効率的/エレガントな方法は何ですか?
-
[解決済み] SQL ServerでINSERT INTOとしてデータをエクスポートする