複数のサーバーに対するステートメントの同時実行
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
この記事では、SQL Server で複数のサーバーに対してクエリを同時に実行する方法について説明します。そのためには、ローカル サーバー グループ、または 1 つの中央管理サーバーと 1 つ以上のサーバー グループを作成し、グループ内に 1 つ以上の登録済みサーバーを作成してから、グループ全体のクエリを実行します。
クエリから返された結果は、結合して 1 つの結果ペインに表示するか、別々の結果ペインに表示することができます。 結果セットには、サーバー名と、各サーバーでクエリによって使用されたログインのための列を追加して含めることができます。 中央管理サーバーおよび従属サーバーは、Windows 認証を使用しないと登録できません。 ローカル サーバー グループ内のサーバーは、Windows 認証または SQL Server 認証を使用して登録できます。
次の手順を実行する前に、中央管理サーバーとサーバー グループを作成する必要があります。 詳細については、「中央管理サーバーおよびサーバー グループの作成 (SQL Server Management Studio)」を参照してください。
アクセス許可
中央管理サーバーによって保持される接続は、ユーザーのコンテキスト内で Windows 認証を使用して実行されるため、登録済みサーバーでの有効な権限が変わることがあります。 たとえば、ユーザーは、SQL Server A のインスタンスでは sysadmin 固定サーバー ロールのメンバーであっても、SQL Server B のインスタンスではアクセス許可が限られていることがあります。
複数の構成対象に対してステートメントを同時に実行する
SQL Server Management Studio の [表示] メニューで、[登録済みサーバー] を選びます。
中央管理サーバーを展開し、サーバー グループを右クリックして、[接続] をポイントしてから、[新しいクエリ] を選びます。
クエリ エディターで、次のような Transact-SQL ステートメントを入力して実行します。
USE master GO SELECT * FROM sys.databases; GO
既定では、サーバー グループ内のすべてのサーバーからのクエリ結果が結合されて結果ペインに表示されます。
マルチサーバーの結果オプションを変更する
Management Studioで、[ツール] メニューの [オプション] を選びます。
[クエリ結果]、[SQL Server] の順に展開して、[マルチサーバーの結果] を選びます。
[マルチサーバーの結果] ページで、使用するオプション設定を指定して、[OK] を選びます。