在 SQL Server Management Studio 中同时对多个服务器执行语句

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics 平台系统(PDW)

本文介绍如何通过创建本地服务器组或中央管理服务器(CMS)和一个或多个服务器组在 SQL Server 中同时查询多个服务器。 组中必须有一个或多个已注册的服务器,并且可以对单个组或多个组执行查询。

查询返回的结果可以合并到单个结果窗格中,也可以在单独的结果窗格中返回。 结果集可以包含额外列,这些列提供生成每行的服务器的名称,以及用于连接到提供每行的服务器的登录名。

权限

由于 CMS 维护的服务器的连接是在用户的上下文中建立的,因此已注册服务器上的有效权限可能会有所不同。 例如,用户可能是 SQL Server A 实例上的 sysadmin 固定服务器角色的成员,但对 SQL Server B 实例的权限有限。

查询在查询编辑器中执行时,使用用户提供的连接信息针对组中的所有服务器执行查询。 注册到未保存密码的 SQL Server 身份验证的服务器无法连接。

同时对多个配置目标执行指令

如果“已注册的服务器”工具窗口在 SQL Server Management Studio 中不可见,请选择“ 查看>已注册的服务器”,或键入 Ctrl + Alt + G

  1. 展开 数据库引擎,然后 中央管理服务器 并查找包含要查询的服务器的服务器组。

  2. 右键单击服务器组,然后选择“ 新建查询”。

  3. 在查询编辑器中,连接的服务器数量在状态栏的左下角显示为Connected. (4/4)

    • 第一个数值代表活跃连接。 第二个数字是组中已注册的服务器数。
    • 如果与服务器的连接失败,则不会显示错误消息。
  4. 在查询编辑器中,输入并执行 Transact-SQL 语句,例如以下示例:

    SELECT
        @@VERSION AS [ProductVersion],
        SERVERPROPERTY('Edition') AS [Edition];
    GO
    
  5. 默认情况下,结果窗格将服务器组中所有服务器的查询结果合并到单个结果网格中。

更改多服务器结果选项

  1. 在 SQL Server Management Studio 中,选择 “工具>选项>查询结果>”SQL Server>多服务器结果

  2. 根据您的喜好编辑选项。

    选项 默认值 定义
    将登录名添加到结果 在查询结果中添加一列,该列显示连接到服务器的登录名。
    将服务器名称添加到结果 正确 在查询结果中添加一个列,该列显示生成行的服务器的名称。
    合并结果 正确 显示同一结果网格中所有服务器的结果。
  3. 选择“确定”,保存所做更改。