適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
この記事では、ローカル サーバー グループ、または中央管理サーバー (CMS) と 1 つ以上のサーバー グループを作成して、SQL Server で複数のサーバーに対して同時にクエリを実行する方法について説明します。 グループ内には 1 つ以上の登録済みサーバーが必要であり、クエリは 1 つのグループまたは複数のグループに対して実行できます。
クエリによって返される結果は、1 つの結果ペインに結合することも、個別の結果ペインで返すことができます。 結果セットには、各行を生成したサーバーの名前を指定する追加の列と、各行を指定したサーバーへの接続に使用されたログインを含めることができます。
権限
CMS によって管理されるサーバーへの接続はユーザーのコンテキストで行われるため、登録済みサーバーに対する有効なアクセス許可は異なる場合があります。 たとえば、ユーザーは、SQL Server A のインスタンスで固定サーバー ロール sysadmin のメンバーである可能性がありますが、SQL Server B のインスタンスに対するアクセス許可は制限されています。
クエリ エディターでクエリを実行すると、ユーザーが提供する接続情報を使用して、グループ内のすべてのサーバーに対して実行されます。 パスワードが保存されていない SQL Server 認証に登録されているサーバーは、接続に失敗します。
複数の構成ターゲットに対してステートメントを同時に実行する
[登録済みサーバー] ツール ウィンドウが SQL Server Management Studio に表示されない場合は、[ 表示>登録されたサーバー] を選択するか、「 Ctrl + Alt + G」と入力します。
[データベース エンジン]、[中央管理サーバー] の順に展開し、クエリを実行するサーバーを含むサーバー グループを見つけます。
サーバー グループを右クリックし、[ 新しいクエリ] を選択します。
クエリ エディターでは、接続されているサーバーの数がステータス バーの左下に
Connected. (4/4)
として表示されます。- 最初の番号はアクティブな接続です。 2 番目の数値は、グループ内の登録済みサーバーの数です。
- サーバーへの接続に失敗した場合、エラー メッセージは表示されません。
クエリ エディターで、次の例のような Transact-SQL ステートメントを入力して実行します。
SELECT @@VERSION AS [ProductVersion], SERVERPROPERTY('Edition') AS [Edition]; GO
既定では、結果ペインは、サーバー グループ内のすべてのサーバーからのクエリ結果を 1 つの結果グリッドに結合します。
マルチサーバーの結果オプションを変更する
SQL Server Management Studio で、ツール>オプション>クエリ結果>SQL Server>マルチサーバー結果を選択します。
設定に基づいてオプションを編集します。
選択肢 既定値 定義 結果にログイン名を追加する いいえ サーバーに接続されているログインの名前を表示する列をクエリ結果に追加します。 結果にサーバー名を追加する 正しい 行を生成するサーバーの名前を表示する列をクエリ結果に追加します。 結果をマージする 正しい 同じ結果グリッド内のすべてのサーバーからの結果を表示します。 [OK] を選択して変更を保存します。