启用和禁用 AlwaysOn 可用性组 (SQL Server)
启用 AlwaysOn 可用性组 是服务器实例使用可用性组的先决条件。 在创建和配置任何可用性组之前,必须在将承载一个或多个可用性组的可用性副本的每个 SQL Server 实例上启用 AlwaysOn 可用性组 功能。
重要提示 |
---|
如果您删除后重新创建了 WSFC 群集,则必须在其原始 WSFC 群集上承载可用性副本的每个 SQL Server 实例上都禁用然后重新启用 AlwaysOn 可用性组 功能。 |
**开始之前: **
先决条件
安全性
**如何: **
确定是否已启用 AlwaysOn 可用性组
启用 AlwaysOn 可用性组
禁用 AlwaysOn 可用性组
开始之前
启用 AlwaysOn 可用性组的先决条件
该服务器实例必须驻留在 Windows Server 故障转移群集 (WSFC) 节点上。
该服务器实例必须正在运行支持 AlwaysOn 可用性组 的 SQL Server 版本。 有关详细信息,请参阅 SQL Server 2012 各个版本支持的功能。
一次仅为一个服务器实例启用 AlwaysOn 可用性组。 在启用 AlwaysOn 可用性组之后,一直等待直到 SQL Server 服务已重新启动,然后才继续在另一个服务器实例上操作。
有关创建和配置可用性组的其他先决条件的信息,请参阅针对 AlwaysOn 可用性组的先决条件、限制和建议 (SQL Server)。
安全性
在 SQL Server 实例上启用 AlwaysOn 可用性组时,服务器实例具有对 WSFC 群集的完全控制权限。
权限
要求本地计算机上 Administrator 组中的成员身份以及对 WSFC 群集的完全控制权限。 使用 PowerShell 启用 AlwaysOn 时,使用**“以管理员身份运行”**选项打开命令提示符窗口。
要求 Active Directory 创建对象和管理对象权限。
[返回页首]
确定是否已启用 AlwaysOn 可用性组
SQL Server Management Studio
Transact-SQL
PowerShell
使用 SQL Server Management Studio
确定是否已启用 AlwaysOn 可用性组
在对象资源管理器中,右键单击服务器实例,再单击**“属性”**。
在**“服务器属性”对话框中,单击“常规”**页。 **“启用 HADR”**属性显示以下值之一:
True(如果启用 AlwaysOn 可用性组)
False(如果禁用 AlwaysOn 可用性组)。
使用 Transact-SQL
确定是否已启用 AlwaysOn 可用性组
使用以下 SERVERPROPERTY 语句:
SELECT SERVERPROPERTY ('IsHadrEnabled');
IsHadrEnabled 服务器属性的设置指示是否为 AlwaysOn 可用性组启用了 SQL Server 实例,如下所示:
如果 IsHadrEnabled = 1,则启用 AlwaysOn 可用性组。
如果 IsHadrEnabled = 0,则禁用 AlwaysOn 可用性组。
注意 有关 IsHadrEnabled 服务器属性的详细信息,请参阅 SERVERPROPERTY (Transact-SQL)。
[返回页首]
使用 PowerShell
确定是否已启用 AlwaysOn 可用性组
将默认值设置 (cd) 为要确定是否启用 AlwaysOn 可用性组 的服务器实例。
输入以下 PowerShell Get-Item 命令:
PS SQLSERVER:\SQL\NODE1\DEFAULT> get-item . | select IsHadrEnabled
注意 若要查看 cmdlet 的语法,请使用 SQL Server PowerShell 环境中的 Get-Help cmdlet。 有关详细信息,请参阅 获取 SQL Server PowerShell 帮助。
设置和使用 SQL Server PowerShell 提供程序
[返回页首]
启用 AlwaysOn 可用性组
启用 AlwaysOn,使用:
SQL Server 配置管理器
PowerShell
使用 SQL Server 配置管理器
启用 AlwaysOn 可用性组
连接到承载要启用 AlwaysOn 可用性组的 SQL Server 实例的 Windows Server 故障转移群集 (WSFC) 节点。
在**“开始”菜单中,依次指向“所有程序”、 Microsoft SQL Server 2012 、“配置工具”,然后单击“SQL Server 配置管理器”**。
在**“SQL Server 配置管理器”中,单击“SQL Server 服务”,右键单击 SQL Server (<instance name>),然后单击“属性”**,其中 <instance name> 是要启用 AlwaysOn 可用性组的本地服务器实例名称。
选择**“AlwaysOn 高可用性”**选项卡。
验证**“Windows** **故障转移群集名称”**字段包含本地故障转移群集的名称。 如果此字段为空,则此服务器实例当前不支持 AlwaysOn 可用性组。 原因包括本地计算机不是群集节点、WSFC 群集已关闭或此版本的 SQL Server 2012 不支持 AlwaysOn 可用性组。
选中**“启用 AlwaysOn 可用性组”复选框,然后单击“确定”**。
SQL Server 配置管理器保存您的更改。 然后,必须手动重新启动 SQL Server 服务。 这使您可以选择最适合您的业务要求的重新启动时间。 SQL Server 服务重新启动时,将启用 AlwaysOn 且 IsHadrEnabled 服务器属性将设置为 1。
[返回页首]
使用 SQL Server PowerShell
启用 AlwaysOn
将目录切换 (cd) 到您要启用 AlwaysOn 可用性组的服务器实例。
使用 Enable-SqlAlwaysOn cmdlet 启用 AlwaysOn 可用性组。
若要查看 cmdlet 的语法,请使用 SQL Server PowerShell 环境中的 Get-Help cmdlet。 有关详细信息,请参阅获取 SQL Server PowerShell 帮助。
注意 有关如何控制 Enable-SqlAlwaysOn cmdlet 是否重新启动 SQL Server 服务的信息,请参阅本主题后面的 Cmdlet 何时重新启动 SQL Server 服务?。
设置和使用 SQL Server PowerShell 提供程序
[返回页首]
示例:Enable-SqlAlwaysOn
以下 PowerShell 命令在 SQL Server 实例 (Computer\Instance) 上启用 AlwaysOn 可用性组。
Enable-SqlAlwaysOn -Path SQLSERVER:\SQL\Computer\Instance
禁用 AlwaysOn 可用性组
禁用 AlwaysOn 之前:
建议
禁用 AlwaysOn,使用:
SQL Server 配置管理器
PowerShell
**跟进:**在禁用 AlwaysOn 之后
重要提示 |
---|
一次只能在一个服务器实例上禁用 AlwaysOn。 在禁用 AlwaysOn 可用性组之后,一直等待直到 SQL Server 服务已重新启动,然后才继续在另一个服务器实例上操作。 |
建议
在服务器实例上禁用 AlwaysOn 之前,我们建议您执行以下操作:
如果该服务器实例当前正在承载您要保留的可用性组的主副本,我们建议您尽可能手动将该可用性组故障转移到一个同步的辅助副本。 有关详细信息,请参阅执行可用性组的计划手动故障转移 (SQL Server)。
删除所有本地辅助副本。 有关详细信息,请参阅从可用性组中删除辅助副本 (SQL Server)。
使用 SQL Server 配置管理器
禁用 AlwaysOn
连接到承载要禁用 AlwaysOn 可用性组的 SQL Server 实例的 Windows Server 故障转移群集 (WSFC) 节点。
在**“开始”菜单中,依次指向“所有程序”、 Microsoft SQL Server 2012 、“配置工具”,然后单击“SQL Server 配置管理器”**。
在**“SQL Server 配置管理器”中,单击“SQL Server 服务”,右键单击 SQL Server (<instance name>),然后单击“属性”**,其中 <instance name> 是要禁用 AlwaysOn 可用性组的本地服务器实例名称。
在**“AlwaysOn 高可用性”选项卡上,取消选中“启用 AlwaysOn 可用性组”复选框,然后单击“确定”**。
SQL Server 配置管理器保存您的更改并重新启动 SQL Server 服务。 SQL Server 服务重新启动时,将禁用 AlwaysOn 且 IsHadrEnabled 服务器属性将设置为 0 以指示禁用 AlwaysOn 可用性组。
我们建议您查看本主题后面的跟进:在禁用 AlwaysOn 之后中的信息。
[返回页首]
使用 SQL Server PowerShell
禁用 AlwaysOn
将目录切换 (cd) 到您要禁用 AlwaysOn 可用性组的当前启用的服务器实例。
使用 Disable-SqlAlwaysOn cmdlet 启用 AlwaysOn 可用性组。
例如,下面的命令禁用 SQL Server 实例 (Computer\Instance) 上的 AlwaysOn 可用性组。 此命令需要重新启动实例,并将提示您确认此重新启动。
Disable-SqlAlwaysOn -Path SQLSERVER:\SQL\Computer\Instance
重要提示 有关如何控制 Disable-SqlAlwaysOn cmdlet 是否重新启动 SQL Server 服务的信息,请参阅本主题后面的 Cmdlet 何时重新启动 SQL Server 服务?
若要查看 cmdlet 的语法,请在 SQL Server PowerShell 环境中使用 Get-Help cmdlet。 有关详细信息,请参阅获取 SQL Server PowerShell 帮助。
设置和使用 SQL Server PowerShell 提供程序
[返回页首]
跟进:在禁用 AlwaysOn 之后
禁用 AlwaysOn 可用性组后,必须重新启动 SQL Server 实例。 SQL 配置管理器将自动重新启动该服务器实例。 但是,如果您使用了 Disable-SqlAlwaysOncmdlet,将需要手动重新启动该服务器实例。 有关详细信息,请参阅 sqlservr 应用程序。
在重新启动的服务器实例上:
可用性数据库在 SQL Server 启动时不启动,因此无法访问它们。
唯一支持的 AlwaysOn Transact-SQL 语句是 DROP AVAILABILITY GROUP。 不支持 CREATE AVAILABILITY GROUP、ALTER AVAILABILITY GROUP 和 ALTER DATABASE 的 SET HADR 选项。
SQL Server 元数据和 WSFC 中的 AlwaysOn 可用性组 配置数据不受禁用 AlwaysOn 可用性组的影响。
如果您在为承载一个或多个可用性组的辅助副本的每个服务器实例上都永久禁用了 AlwaysOn 可用性组,则我们建议您完成以下步骤:
如果您在禁用 AlwaysOn 前未删除本地可用性组副本,则删除服务器实例正为其承载可用性组副本的每个可用性组。 有关删除可用性组的信息,请参阅删除可用性组 (SQL Server)。
若要删除留在原地的元数据,请删除服务器实例上作为原始 WSFC 群集一部分的受影响的可用性组。
所有连接仍可以访问任何主数据库,但是主数据库和辅助数据库之间的数据同步将停止。
辅助数据库将进入 RESTORING 状态。 您可以删除这些数据库,或者可通过使用 RESTORE WITH RECOVERY 还原它们。 但是,还原的数据库不再参与可用性组数据同步。
Cmdlet 何时重新启动 SQL Server 服务?
在当前正在运行的服务器实例上,使用 Enable-SqlAlwaysOn 或 Disable-SqlAlwaysOn 更改当前 AlwaysOn 设置可能导致 SQL Server 服务重新启动。 重新启动行为取决于以下条件:
指定了 -NoServiceRestart 参数 |
指定了 -Force 参数 |
重新启动 SQL Server 服务? |
---|---|---|
否 |
否 |
默认情况。 但是 cmdlet 提示您以下信息: 若要完成此操作,必须重新启动服务器实例“<instance_name>”的 SQL Server 服务。 是否继续? [Y] 是 [N] 否 [S] 挂起 [?]帮助(默认为“Y”): 如果指定 N 或 S,则不重新启动该服务。 |
否 |
是 |
重新启动服务。 |
是 |
否 |
不重新启动服务。 |
是 |
是 |
不重新启动服务。 |
[返回页首]