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

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

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

  • 开始之前:

    限制和局限

    先决条件

    建议

    安全性

  • **若要切换可用性副本的群集上下文,请使用:**Transact-SQL

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

  • 相关任务

  • 相关内容

开始之前

注意事项注意

仅在跨群集迁移 AlwaysOn 可用性组 部署的过程中切换 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) 中的节点上执行。 意向的目标群集是 xyz 域 (clus01.xyz.com) 中的 CLUS01 群集。 但是,本地域主机还承载名为 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 状态。

用于“返回首页”链接的箭头图标[返回页首]

相关任务

用于“返回首页”链接的箭头图标[返回页首]

相关内容

用于“返回首页”链接的箭头图标[返回页首]

请参阅

参考

ALTER SERVER CONFIGURATION (Transact-SQL)

概念

AlwaysOn 可用性组 (SQL Server)

Windows Server 故障转移群集 (WSFC) 与 SQL Server