更改服务器实例的 HADR 群集上下文 (SQL Server)

本主题介绍如何在 SQL Server 2012 SP1 及更高版本中使用 Transact-SQL 切换 SQL Server 实例的 HADR 群集上下文。 HADR 群集上下文 用于确定哪一 Windows Server 故障转移群集 (WSFC) 群集管理服务器实例所承载的可用性副本的元数据。

仅在跨群集迁移Always On可用性组期间将 HADR 群集上下文切换到新 WSFC 群集上的 SQL Server 2012 SP1 实例。 Always On可用性组的跨群集迁移支持将操作系统升级到 Windows 8 或 Windows Server 2012,同时将可用性组的停机时间降至最低。 有关详细信息,请参阅针对操作系统升级的 AlwaysOn 可用性组的跨群集迁移

开始之前

注意

仅在跨群集迁移Always On可用性组部署期间切换 HADR 群集上下文。

限制和局限

  • 您只能将 HADR 群集上下文从本地 WSFC 群集切换到远程群集,然后再从远程群集切换回本地群集。 不能将 HADR 群集上下文从一个远程群集切换到另一个远程群集。

  • 只有在 SQL Server 实例不承载任何可用性副本时,才能将 HADR 群集上下文切换到远程群集。

  • 远程 HADR 群集上下文随时可以切换回本地群集。 但是,只要服务器实例承载任何可用性副本,该上下文将无法再进行切换。

先决条件

  • 更改 HADR 群集上下文的服务器实例必须运行SQL Server 2012 SP1 或更高版本 (Enterprise edition 或更高版本) 。

  • 必须为 AlwaysOn 启用该服务器实例。 有关详细信息,请参阅启用和禁用 AlwaysOn 可用性组 (SQL Server)

  • 为了符合从本地群集上下文切换到远程群集上下文的条件,服务器实例不能承载任何可用性副本。 sys.availability_replicas 目录视图不应返回任何行。

    如果在服务器实例上存在任何可用性副本,则您必须首先执行以下操作之一,然后才能更改 HADR 群集上下文:

    副本角色 操作 链接
    主要 使可用性组脱机。 使可用性组脱机 (SQL Server)
    次要 从其可用性组中删除副本 从可用性组中删除辅助副本 (SQL Server)
  • 在您可以从远程群集切换到本地群集之前,所有同步提交副本必须都处于 SYNCHRONIZED 状态。

建议

  • 我们建议您指定完整的域名。 这是因为为了找到短名称的目标 IP 地址,ALTER SERVER CONFIGURATION 使用 DNS 名称解析。 在某些情况下,根据 DNS 搜索顺序,使用短名称可能会导致混淆。 例如,考虑以下命令,该命令在 abc 域 (node1.abc.com) 中的节点上执行。 意向的目标群集是 CLUS01 域 ( xyz ) 中的clus01.xyz.com群集。 但是,本地域主机还承载名为 CLUS01 (clus01.abc.com) 的一个群集。

    如果已指定目标群集 CLUS01的短名称,则 DNS 名称解析可能会返回错误群集 clus01.abc.com的 IP 地址。 为了避免此类混淆,请指定目标群集的完整名称,如下例中所示:

    ALTER SERVER CONFIGURATION SET HADR CLUSTER CONTEXT = 'clus01.xyz.com'  
    

安全性

权限

  • SQL Server 登录名

    需要 CONTROL SERVER 权限。

  • SQL Server 服务帐户

    服务器实例的 SQL Server 服务帐户必须具有:

    • 打开目标 WSFC 群集的权限。

    • 远程 WSFC 读写访问权限。

“使用 Transact-SQL”

更改可用性副本的 WSFC 群集上下文

  1. 连接到承载可用性组的主副本或辅助副本的服务器实例。

  2. 使用 ALTER SERVER CONFIGURATION 语句的 SET HADR CLUSTER CONTEXT 子句,如下所示:

    ALTER SERVER CONFIGURATION SET HADR CLUSTER CONTEXT = { 'windows_cluster' |LOCAL }

    其中:

    windows_cluster
    WSFC 群集的群集对象名称 (CON)。 您可以指定短名称或者完整的域名称。 我们建议您指定完整的域名。 有关详细信息,请参阅本主题前面的 建议

    LOCAL
    本地 WSFC 群集。

示例

下面的示例将 HADR 群集上下文更改为其他群集。 若要标识目标 WSFC 群集 ( clus01),本示例指定完整的群集对象名称 ( clus01.xyz.com)。

ALTER SERVER CONFIGURATION SET HADR CLUSTER CONTEXT = 'clus01.xyz.com';  

下面的示例将 HADR 群集上下文更改为本地 WSFC 群集。

ALTER SERVER CONFIGURATION SET HADR CLUSTER CONTEXT = LOCAL;  

跟进:在切换可用性副本的群集上下文后

新的 HADR 群集上下文将立即生效,而不重新启动服务器实例。 HADR 群集上下文设置是持久的实例级别设置,在服务器实例重新启动时也保持不变。

通过查询 sys.dm_hadr_cluster 动态管理视图确认新的 HADR 群集上下文,如下所示:

SELECT cluster_name FROM sys.dm_hadr_cluster  

此查询应返回为其设置 HADR 群集上下文的群集的名称。

在 HADR 群集上下文切换为新的群集时:

  • 对于 SQL Server的实例当前承载的任何可用性副本,将清除元数据。

  • 以前属于可用性副本的所有数据库现在都处于 RESTORING 状态。

Related Tasks

相关内容

另请参阅

使用 SQL Server (SQL Server) Windows Server 故障转移群集 (WSFC) AlwaysOn 可用性组
ALTER SERVER CONFIGURATION (Transact-SQL)