启用和禁用 AlwaysOn 可用性组 (SQL Server)

启用Always On可用性组是服务器实例使用可用性组的先决条件。 必须先在托管一个或多个可用性组的可用性副本 (replica) 的每个SQL Server实例上启用Always On可用性组功能,然后才能创建和配置任何可用性组。

重要

如果删除并重新创建 WSFC 群集,则必须在原始 WSFC 群集上托管可用性副本 (replica) 的每个SQL Server实例上禁用并重新启用Always On可用性组功能。

开始之前

启用 AlwaysOn 可用性组的先决条件

  • 该服务器实例必须驻留在 Windows Server 故障转移群集 (WSFC) 节点上。

  • 服务器实例必须运行支持Always On可用性组的 SQL Server 版本。 有关详细信息,请参阅 Features Supported by the Editions of SQL Server 2014

  • 一次仅为一个服务器实例启用 AlwaysOn 可用性组。 启用 AlwaysOn 可用性组后,请等到SQL Server服务重启后,再转到另一个服务器实例。

有关创建和配置可用性组的其他先决条件的信息,请参阅 AlwaysOn 可用性组的先决条件、限制和建议 (SQL Server)

安全性

虽然在 SQL Server 实例上启用了 AlwaysOn 可用性组,但服务器实例对 WSFC 群集具有完全控制权。

权限

要求本地计算机上 Administrator 组中的成员身份以及对 WSFC 群集的完全控制。 使用 PowerShell 启用 AlwaysOn 时,使用 “以管理员身份运行” 选项打开命令提示符窗口。

要求 Active Directory 创建对象和管理对象权限。

确定是否已启用 AlwaysOn 可用性组

使用 SQL Server Management Studio

确定是否已启用 AlwaysOn 可用性组

  1. 在“对象资源管理器”中,右键单击服务器实例,然后单击“属性”。

  2. “服务器属性” 对话框中,单击 “常规” 页。 “启用 HADR” 属性显示以下值之一:

    • True(如果启用 AlwaysOn 可用性组)

    • False(如果禁用 AlwaysOn 可用性组)。

“使用 Transact-SQL”

确定是否已启用 AlwaysOn 可用性组

  1. 使用以下 SERVERPROPERTY 语句:

    SELECT SERVERPROPERTY ('IsHadrEnabled');  
    

    服务器属性的设置IsHadrEnabled指示是否为 AlwaysOn 可用性组启用了 SQL Server 实例,如下所示:

    • 如果 IsHadrEnabled = 1,则启用 AlwaysOn 可用性组。

    • 如果 IsHadrEnabled = 0,则禁用 AlwaysOn 可用性组。

    注意

    有关服务器属性的详细信息 IsHadrEnabled ,请参阅 SERVERPROPERTY (Transact-SQL)

使用 PowerShell

确定是否已启用 AlwaysOn 可用性组

  1. 将默认 (cd) 设置为服务器实例 (例如 \SQL\NODE1\DEFAULT ,要确定是否启用Always On可用性组的) 。

  2. 输入以下 PowerShell Get-Item 命令:

    Get-Item . | Select IsHadrEnabled  
    

    注意

    若要查看 cmdlet 的语法,请在 SQL Server PowerShell 环境中使用 Get-Help cmdlet。 有关详细信息,请参阅 Get Help SQL Server PowerShell

设置和使用 SQL Server PowerShell 提供程序

启用 AlwaysOn 可用性组

启用 AlwaysOn,使用:

使用 SQL Server 配置管理器

启用 AlwaysOn 可用性组

  1. 连接到 Windows Server 故障转移群集 (WSFC) 节点,该节点托管要在其中启用 AlwaysOn 可用性组的 SQL Server 实例。

  2. “开始”菜单上,依次指向“所有程序”、“Microsoft SQL Server 2014”、“配置工具”,然后单击“SQL Server 配置管理器”。

  3. “SQL Server 配置管理器”中,单击“SQL Server服务”,右键单击“SQL Server (<instance name>) ”,其中 <instance name> 是要为其启用 AlwaysOn 可用性组的本地服务器实例的名称,然后单击“属性”。

  4. 选择 “AlwaysOn 高可用性” 选项卡。

  5. 验证 Windows 故障转移群集名称字段包含本地故障转移群集的名称。 如果此字段为空,则此服务器实例当前不支持 AlwaysOn 可用性组。 本地计算机不是群集节点,WSFC 群集已关闭,或者此版本的 SQL Server 2014 不支持Always On可用性组。

  6. 选中“检查启用 AlwaysOn 可用性组”框,然后单击“确定”。

    SQL Server 配置管理器保存您的更改。 然后,必须手动重新启动 SQL Server 服务。 这使您可以选择最适合您的业务要求的重新启动时间。 当SQL Server服务重新启动时,将启用 AlwaysOn,并且IsHadrEnabled服务器属性将设置为 1。

使用 SQL Server PowerShell

启用 AlwaysOn

  1. 将目录切换 (cd) 到您要启用 AlwaysOn 可用性组的服务器实例。

  2. 使用 Enable-SqlAlwaysOn cmdlet 启用 AlwaysOn 可用性组。

    若要查看 cmdlet 的语法,请在 SQL Server PowerShell 环境中使用 Get-Help cmdlet。 有关详细信息,请参阅 Get Help SQL Server PowerShell

    注意

    有关如何控制 cmdlet 是否Enable-SqlAlwaysOn重启SQL Server服务的信息,请参阅本主题后面的 Cmdlet 何时重启SQL Server服务?

设置和使用 SQL Server PowerShell 提供程序

示例:Enable-SqlAlwaysOn

以下 PowerShell 命令在 SQL Server (计算机\实例) 实例上启用Always On可用性组。

Enable-SqlAlwaysOn -Path SQLSERVER:\SQL\Computer\Instance  

禁用 AlwaysOn 可用性组

重要

一次只能在一个服务器实例上禁用 AlwaysOn。 禁用 AlwaysOn 可用性组后,请等待SQL Server服务重启,然后再转到另一个服务器实例。

建议

在服务器实例上禁用 AlwaysOn 之前,我们建议您执行以下操作:

  1. 如果该服务器实例当前正在承载您要保留的可用性组的主副本,我们建议您尽可能手动将该可用性组故障转移到一个同步的辅助副本。 有关详细信息,请参阅执行可用性组的计划手动故障转移 (SQL Server)

  2. 删除所有本地辅助副本。 有关详细信息,请参阅从可用性组中删除次要副本 (SQL Server)

使用 SQL Server 配置管理器

禁用 AlwaysOn

  1. 连接到 Windows Server 故障转移群集 (WSFC) 节点,该节点托管要在其中禁用 AlwaysOn 可用性组的 SQL Server 实例。

  2. “开始”菜单上,依次指向“所有程序”、“Microsoft SQL Server 2014”、“配置工具”,然后单击“SQL Server 配置管理器”。

  3. “SQL Server 配置管理器”中,单击“SQL Server服务”,右键单击“SQL Server (<instance name>) ”,其中 <instance name> 是要为其禁用 AlwaysOn 可用性组的本地服务器实例的名称,然后单击“属性”。

  4. 在“AlwaysOn 高可用性”选项卡上,取消选中“启用 AlwaysOn 可用性组” 复选框,然后单击“确定”

    SQL Server 配置管理器将保存更改并重启 SQL Server 服务。 当SQL Server服务重新启动时,将禁用 AlwaysOn,并且IsHadrEnabled服务器属性将设置为 0,以指示禁用 AlwaysOn 可用性组。

  5. 我们建议您查看本主题后面的 跟进:在禁用 AlwaysOn 之后中的信息。

使用 SQL Server PowerShell

禁用 AlwaysOn

  1. 将目录 (cd) 更改为要为 AlwaysOn 可用性组禁用的当前启用的服务器实例。

  2. 使用 Disable-SqlAlwaysOn cmdlet 启用 AlwaysOn 可用性组。

    例如,以下命令在 SQL Server (计算机\实例的实例) 上禁用 AlwaysOn 可用性组。 此命令需要重新启动实例,并将提示您确认此重新启动。

    Disable-SqlAlwaysOn -Path SQLSERVER:\SQL\Computer\Instance  
    

    重要

    有关如何控制 cmdlet 是否Disable-SqlAlwaysOn重启SQL Server服务的信息,请参阅本主题后面的 Cmdlet 何时重启SQL Server服务?

    若要查看 cmdlet 的语法,请在 SQL Server PowerShell 环境中使用 Get-Help cmdlet。 有关详细信息,请参阅 Get Help SQL Server PowerShell

设置和使用 SQL Server PowerShell 提供程序

跟进:在禁用 AlwaysOn 之后

禁用 AlwaysOn 可用性组后,必须重启 SQL Server 实例。 SQL 配置管理器将自动重新启动该服务器实例。 但是,如果您使用了 Disable-SqlAlwaysOncmdlet,将需要手动重新启动该服务器实例。 有关详细信息,请参阅 sqlservr Application

在重新启动的服务器实例上:

  • 可用性数据库在 SQL Server 启动时不启动,因此无法访问它们。

  • 唯一支持的 AlwaysOn Transact-SQL 语句是 DROP AVAILABILITY GROUP。 不支持 CREATE AVAILABILITY GROUP、ALTER AVAILABILITY GROUP 和 ALTER DATABASE 的 SET HADR 选项。

  • WSFC 中的SQL Server元数据和Always On可用性组配置数据不受禁用 AlwaysOn 可用性组影响。

如果您在为承载一个或多个可用性组的辅助副本的每个服务器实例上都永久禁用了 AlwaysOn 可用性组,则我们建议您完成以下步骤:

  1. 如果您在禁用 AlwaysOn 前未删除本地可用性组副本,则删除服务器实例正为其承载可用性组副本的每个可用性组。 有关删除可用性组的信息,请参阅删除可用性组 (SQL Server)

  2. 若要删除留在原地的元数据,请删除服务器实例上作为原始 WSFC 群集一部分的受影响的可用性组。

  3. 所有连接仍可以访问任何主数据库,但是主数据库和辅助数据库之间的数据同步将停止。

  4. 辅助数据库将进入 RESTORING 状态。 您可以删除这些数据库,或者可通过使用 RESTORE WITH RECOVERY 还原它们。 但是,还原的数据库不再参与可用性组数据同步。

Cmdlet 何时重新启动 SQL Server 服务?

在当前正在运行的服务器实例上,使用 Enable-SqlAlwaysOnDisable-SqlAlwaysOn 更改当前 AlwaysOn 设置可能导致 SQL Server 服务重新启动。 重新启动行为取决于以下条件:

指定了 -NoServiceRestart 参数 指定了 -Force 参数 是否已重启 SQL Server 服务?
默认情况。 但是 cmdlet 提示您以下信息:

若要完成此操作,必须重启服务器实例“<instance_name>”的 SQL Server 服务。 是否继续?

[Y] 是 [N] 否 [S] 暂停 [?] 帮助(默认值为“Y”):

如果指定 NS,则不重新启动该服务。
重新启动服务。
不重新启动服务。
不重新启动服务。

另请参阅

AlwaysOn 可用性组概述 (SQL Server)
SERVERPROPERTY (Transact-SQL)