ALTER AVAILABILITY GROUP (Transact-SQL)

更改 SQL Server 2012 中现有的 AlwaysOn 可用性组。 只有当前主副本支持大多数 ALTER AVAILABILITY GROUP 参数。 但是,只有辅助副本支持 JOIN、FAILOVER 和 FORCE_FAILOVER_ALLOW_DATA_LOSS 参数。

主题链接图标 Transact-SQL 语法约定

语法

ALTER AVAILABILITY GROUP group_name 
  {
     SET ( <set_option_spec> ) 
   | ADD DATABASE database_name 
   | REMOVE DATABASE database_name
   | ADD REPLICA ON <add_replica_spec> 
   | MODIFY REPLICA ON <modify_replica_spec>
   | REMOVE REPLICA ON <server_instance>
   | JOIN
   | FAILOVER
   | FORCE_FAILOVER_ALLOW_DATA_LOSS   | ADD LISTENER ‘dns_name’ ( <add_listener_option> )
   | MODIFY LISTENER ‘dns_name’ ( <modify_listener_option> )
   | RESTART LISTENER ‘dns_name’
   | REMOVE LISTENER ‘dns_name’
   | OFFLINE
  }
[ ; ]

<set_option_spec> ::= 
    AUTOMATED_BACKUP_PREFERENCE = { PRIMARY | SECONDARY_ONLY| SECONDARY | NONE }
  | FAILURE_CONDITION_LEVEL  = { 1 | 2 | 3 | 4 | 5 } 
  | HEALTH_CHECK_TIMEOUT = milliseconds 

<server_instance> ::= 
 { 'system_name[\instance_name]' | 'FCI_network_name[\instance_name]' }

<add_replica_spec>::=
  <server_instance> WITH
    (
       ENDPOINT_URL = 'TCP://system-address:port',
       AVAILABILITY_MODE = { SYNCHRONOUS_COMMIT | ASYNCHRONOUS_COMMIT },
       FAILOVER_MODE = { AUTOMATIC | MANUAL }
       [ , <add_replica_option> [ ,...n ] ]
    ) 

  <add_replica_option>::=
       BACKUP_PRIORITY = n
     | SECONDARY_ROLE ( { 
          ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL } 
        | READ_ONLY_ROUTING_URL = 'TCP://system-address:port' 
          } )
     | PRIMARY_ROLE ( { 
          ALLOW_CONNECTIONS = { READ_WRITE | ALL } 
        | READ_ONLY_ROUTING_LIST = { ( ‘<server_instance>’ [ ,...n ] ) | NONE } 
          } )
     | SESSION_TIMEOUT = seconds 


<modify_replica_spec>::=
  <server_instance> WITH
    (  
       ENDPOINT_URL = 'TCP://system-address:port' 
     | AVAILABILITY_MODE = { SYNCHRONOUS_COMMIT | ASYNCHRONOUS_COMMIT } 
     | FAILOVER_MODE = { AUTOMATIC | MANUAL } 
     | BACKUP_PRIORITY = n
     | SECONDARY_ROLE ( { 
          ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL } 
        | READ_ONLY_ROUTING_URL = 'TCP://system-address:port' 
          } )
     | PRIMARY_ROLE ( { 
          ALLOW_CONNECTIONS = { READ_WRITE | ALL } 
        | READ_ONLY_ROUTING_LIST = { ( ‘<server_instance>’ [ ,...n ] ) | NONE } 
          } )
     | SESSION_TIMEOUT = seconds 
    )  


<add_listener_option> ::=
   {
      WITH DHCP [ ON ( <network_subnet_option> ) ]
    | WITH IP ( { ( <ip_address_option> ) } [ , ...n ] ) [ , PORT = listener_port ]
   }

  <network_subnet_option> ::=
     ‘four_part_ipv4_address’, ‘four_part_ipv4_mask’  

  <ip_address_option> ::=
     { 
        ‘four_part_ipv4_address’, ‘four_part_ipv4_mask’
      | ‘ipv6_address’
     }

<modify_listener_option>::=
    {
       ADD IP ( <ip_address_option> ) 
     | PORT = listener_port
    }

参数

  • group_name
    指定新可用性组的名称。 group_name 必须是一个有效的 SQL Server 标识符,并且它在 WSFC 群集的所有可用性组中必须是唯一的。

  • AUTOMATED_BACKUP_PREFERENCE = { PRIMARY | SECONDARY_ONLY| SECONDARY | NONE }
    指定在选择执行备份的位置时有关备份作业应该如何评估主副本的首选项。 您可以编写给定备份作业的脚本,以便纳入自动备份首选项。 了解 SQL Server 不会强制实施首选项十分重要,因为它对临时备份没有影响。

    仅在主副本上支持。

    这些值如下所示:

    • PRIMARY
      指定备份应该始终在主副本上发生。 如果您需要在对辅助副本运行备份时不支持的备份功能,例如创建差异备份,此选项将很有用。

      重要说明重要提示

      如果您计划使用日志传送为可用性组准备任何辅助数据库,请将自动备份首选项设置为“主要”,直到准备好所有辅助数据库并将其加入可用性组。

    • SECONDARY_ONLY
      指定备份应该永远不会在主副本上执行。 如果主副本是唯一的联机副本,则备份应不会发生。

    • SECONDARY
      指定备份应在辅助副本上发生,但在主副本是唯一联机的副本时除外。 在该情况下,备份应在主副本上发生。 这是默认行为。

    • NONE
      指定您希望在选择要执行备份的副本时备份作业将忽略可用性副本的角色。 请注意,备份作业可能评估其他因素,例如每个可用性副本的备份优先级及其操作状态和已连接状态。

    重要说明重要提示

    不会强制实施 AUTOMATED_BACKUP_PREFERENCE 设置。 对此首选项的解释取决于您为给定可用性组中的数据库撰写备份作业脚本的逻辑(如果有)。 自动备份首选项设置对临时备份没有任何影响。 有关详细信息,请参阅配置可用性副本备份 (SQL Server)

    注意注意

    若要查看现有可用性组的自动备份首选项,请选择 sys.availability_groups 目录视图的 automated_backup_preferenceautomated_backup_preference_desc 列。 此外,sys.fn_hadr_backup_is_preferred_replica (Transact-SQL) 还可用于确定首选备份副本。 对于其中至少一个副本,此函数将始终返回 1,即使 AUTOMATED_BACKUP_PREFERENCE = NONE 时也如此。

  • FAILURE_CONDITION_LEVEL = { 1 | 2 | 3 | 4 | 5 }
    指定将为此可用性组触发自动故障转移的失败条件。 FAILURE_CONDITION_LEVEL 在组级别设置,但仅针对为同步-提交可用性模式 (AVAILIBILITY_MODE = SYNCHRONOUS_COMMIT) 配置的可用性副本。 此外,只有在主副本和辅助副本均配置为自动故障转移模式 (FAILOVER_MODE = AUTOMATIC) 并且辅助副本当前与主副本同步的情况下,失败条件才可以触发自动故障转移。

    仅在主副本上支持。

    失败条件级别的范围 (1–5) 是从最少限制的级别 1 到最多限制的级别 5。 给定的条件级别包含所有限制较少的级别。 因此,最严格的条件级别 5 包含四个限制较少的级别 (1-4),级别 4 包含级别 1-3,依此类推。 下表介绍了与各级别相对应的失败条件。

    级别

    失败条件

    1

    指定在发生以下任何情况时应启动自动故障转移:

    2

    指定在发生以下任何情况时应启动自动故障转移:

    • SQL Server 的实例未连接到群集,并且超出了可用性组的用户指定的 HEALTH_CHECK_TIMEOUT 阈值。

    • 可用性副本处于失败状态。

    3

    指定在发生了严重的 SQL Server 内部错误(例如孤立的自旋锁、严重的写访问冲突或过多的转储)时应启动自动故障转移。

    这是默认行为。

    4

    指定在发生了中等程度的 SQL Server 内部错误(例如在 SQL Server 内部资源池中出现持久的内存不足情况)时应启动自动故障转移。

    5

    指定在出现任何符合的失败条件时应启动自动故障转移,这些失败条件包括:

    • SQL 引擎的工作线程耗尽。

    • 检测到无法解决的死锁。

    注意注意

    缺少 SQL Server 的实例对客户端请求的响应与可用性组无关。

    FAILURE_CONDITION_LEVEL 和 HEALTH_CHECK_TIMEOUT 值为给定组定义“灵活的故障转移策略”。 此灵活的故障转移策略向您提供对必须导致自动故障转移的条件的精确控制。 有关详细信息,请参阅针对可用性组的自动故障转移的灵活的故障转移策略 (SQL Server)

  • HEALTH_CHECK_TIMEOUT = milliseconds
    指定在 WSFC 群集假定服务器实例速度较慢或挂起前,等待 sp_server_diagnostics 系统存储过程返回服务器运行状况信息的等待时间(毫秒)。 HEALTH_CHECK_TIMEOUT 在组级别设置,但仅针对为具有自动故障转移的同步-提交可用性模式 (AVAILIBILITY_MODE = SYNCHRONOUS_COMMIT) 配置的可用性副本。 此外,只有在主副本和辅助副本均配置为自动故障转移模式 (FAILOVER_MODE = AUTOMATIC) 并且辅助副本当前与主副本同步的情况下,运行状况检查超时才可以触发自动故障转移。

    默认的 HEALTH_CHECK_TIMEOUT 值为 30000 毫秒(30 秒)。 最小值为 15000 毫秒(15 秒),最大值为 4294967295 毫秒。

    仅在主副本上支持。

    重要说明重要提示

    sp_server_diagnostics 在数据库级别不执行运行状况检查。

  • ADD DATABASE database_name
    指定要添加到可用性组的一个或多个用户数据库的列表。 这些数据库必须位于承载当前主副本的 SQL Server 实例上。 您可以为一个可用性组指定多个数据库,但每个数据库只能属于一个可用性组。 有关可用性组可支持的数据库类型的信息,请参阅针对 AlwaysOn 可用性组的先决条件、限制和建议 (SQL Server)。 若要找出已属于某个可用性组的本地数据库,请参阅 sys.databases 目录视图中的 replica_id 列。

    仅在主副本上支持。

    注意注意

    在创建可用性组后,将需要连接到承载辅助副本的每个服务器实例,然后准备每个辅助数据库并将它们加入可用性组。 有关详细信息,请参阅启动 AlwaysOn 辅助数据库的数据移动 (SQL Server)

  • REMOVE DATABASE database_name
    从可用性组中删除指定的主数据库和相应的辅助数据库。 仅在主副本上支持。

    有关在从可用性组中删除可用性数据库之后推荐执行的后续任务的信息,请参阅从可用性组中删除主数据库 (SQL Server)

  • ADD REPLICA ON
    指定一到四个 SQL Server 实例以便在可用性组中承载辅助副本。 通过在每个副本的服务器实例地址后追加 WITH (…) 子句来指定每个副本。

    仅在主副本上支持。

    您需要将每个新的辅助副本联接到可用性组。 有关详细信息,请参阅本节后面对 JOIN 选项的说明。

  • <server_instance>
    指定承载副本的 SQL Server 实例的地址。 地址格式依赖于该实例是默认实例还是命名实例以及它是独立实例还是故障转移群集实例 (FCI)。 语法如下:

    { 'system_name[\instance_name]' |'FCI_network_name[\instance_name]' }

    此地址由以下部分组成:

    • system_name
      SQL Server 的目标实例所在的计算机系统的 NetBIOS 名称。 此计算机必须是一个 WSFC 节点。

    • FCI_network_name
      用于访问 SQL Server 故障转移群集的网络名称。 如果服务器实例作为 SQL Server 故障转移伙伴参与,则使用此名称。 在 FCI 服务器实例上执行 SELECT @@SERVERNAME 将返回其完整的 'FCI_network_name[\instance_name]' 字符串(即完整的副本名称)。

    • instance_name
      由 system_name 或 FCI_network_name 承载且已启用 AlwaysOn 的 SQL Server 实例的名称。 对于默认服务器实例,instance_name 是可选的。 此实例名不区分大小写。 在独立服务器实例上,此值名称与执行 @@SERVERNAME 所返回的值相同。

    • \
      仅在指定 instance_name 时才使用的分隔符,用来将该名称与 system_name 或 FCI_network_name 区分开来。

    有关 WSFC 节点和服务器实例的先决条件的信息,请参阅 针对 AlwaysOn 可用性组的先决条件、限制和建议 (SQL Server)

  • ENDPOINT_URL = 'TCP://system-address:port'
    指定 SQL Server 实例(该实例将承载您要添加或修改的可用性副本)的数据库镜像端点的 URL 路径。

    ENDPOINT_URL 在 ADD REPLICA ON 子句中是必需的,在 MODIFY REPLICA ON 子句中是可选的。 有关详细信息,请参阅在添加或修改可用性副本时指定端点 URL (SQL Server)

  • 'TCP://system-address:port'
    指定一个 URL,它用于指定端点 URL 或只读路由 URL。 URL 参数如下所示:

    • system-address
      一个字符串,例如系统名称、完全限定的域名或 IP 地址,它们明确标识了目标计算机系统。

    • port
      是与服务器实例的镜像端点关联的端口号(对于 ENDPOINT_URL 选项)或服务器实例的数据库引擎使用的端口号(对于 READ_ONLY_ROUTING_URL 选项)。

  • AVAILABILITY_MODE = { SYNCHRONOUS_COMMIT | ASYNCHRONOUS_COMMIT }
    指定在主副本可以在给定主数据库上提交事务前,是否必须等待辅助副本确认日志记录硬编码(写入)到磁盘。 针对同一主副本上不同数据库的事务可以单独提交。

    • SYNCHRONOUS_COMMIT
      指定主副本已在此辅助副本上进行硬编码(同步提交模式)前,将等待提交事务。 您可以为最多三个副本(包括主副本)指定 SYNCHRONOUS_COMMIT。

    • ASYNCHRONOUS_COMMIT
      指定主副本无需等待此辅助副本对日志进行硬编码(同步提交可用性模式)即可提交事务。 您可以为最多五个可用性副本(包括主副本)指定 ASYNCHRONOUS_COMMIT。

    AVAILABILITY_MODE 在 ADD REPLICA ON 子句中是必需的,在 MODIFY REPLICA ON 子句中是可选的。 有关详细信息,请参阅可用性模式(AlwaysOn 可用性组)

  • FAILOVER_MODE = { AUTOMATIC | MANUAL }
    指定您要定义的可用性副本的故障转移模式。

    • AUTOMATIC
      启用自动故障转移。 仅在指定 VAILABILITY_MODE = SYNCHRONOUS_COMMIT 的情况下才支持 AUTOMATIC。 您可以为最多两个可用性副本(包括主副本)指定 AUTOMATIC。

      注意注意

      SQL Server 故障转移群集实例 (FCI) 不支持通过可用性组来自动进行故障转移,因此,只能为手动故障转移配置任何由 FCI 承载的可用性副本。

    • MANUAL
      允许数据库管理员手动故障转移或强制手动故障转移(“强制故障转移”)。

    FAILOVER_MODE 在 ADD REPLICA ON 子句中是必需的,在 MODIFY REPLICA ON 子句中是可选的。 存在在不同条件下支持的两种手动故障转移,没有数据丢失的手动故障转移和强制故障转移(可能存在数据丢失)。 有关详细信息,请参阅故障转移和故障转移模式(AlwaysOn 可用性组)

  • BACKUP_PRIORITY **=**n
    指定相对于同一可用性组中的其他副本,在此副本上执行备份的优先级。 该值是范围 0..100 中的整数。 这些值将具有以下含义:

    • 1..100 表示可被选择来执行备份的可用性副本。 1 表示最低优先级,100 表示最高优先级。 如果 BACKUP_PRIORITY = 1,则仅在当前没有可供使用的更高优先级的可用性副本时,才选择此可用性副本来执行备份。

    • 0 表示此可用性副本将永远不会被选择执行备份。 例如,这对于您永远不希望备份故障转移到的远程可用性副本十分有用。

    有关详细信息,请参阅活动辅助副本:辅助副本备份(AlwaysOn 可用性组)

  • SECONDARY_ROLE ()
    指定在此可用性副本当前拥有辅助角色(即它是辅助副本)时将要生效的角色特有设置。 在括号内指定一个或两个辅助角色选项。 如果指定两个选项,则使用以逗号分隔的列表。

    辅助角色选项如下所示:

    • ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL }
      指定给定的可用性副本(正在执行辅助角色,也就是充当辅助副本)的数据库是否可以接受来自客户端的连接,可以是以下之一:

      • NO
        不允许与此副本的辅助数据库的用户连接。 它们不可用于读访问。 这是默认行为。

      • READ_ONLY
        只允许连接 Application Intent 属性设置为 ReadOnly 的辅助副本中的数据库。 有关此属性的详细信息,请参阅将连接字符串关键字用于 SQL Server Native Client

      • ALL
        允许针对辅助副本中的数据库的所有连接进行只读访问。

      有关详细信息,请参阅活动辅助副本:可读辅助副本(AlwaysOn 可用性组)

    • READ_ONLY_ROUTING_URL = 'TCP://system-address:port'
      指定要用于此可用性副本的路由读意向连接请求的 URL。 这是 SQL Server 数据库引擎侦听的 URL。 通常,SQL Server 数据库引擎的默认实例侦听 TCP 端口 1433。

      对于命名实例,您可以通过查询 sys.dm_tcp_listener_states 动态管理视图的 porttype_desc 列来获取端口号。 服务器实例使用 Transact-SQL 侦听器 (type_desc = 'TSQL')。

      有关计算可用性副本的只读路由 URL 的详细信息,请参阅计算 AlwaysOn 的 read_only_routing_url

      注意注意

      对于 SQL Server 的命名实例,应将 Transact-SQL 侦听器配置为使用特定端口。 有关详细信息,请参阅配置服务器以侦听特定 TCP 端口(SQL Server 配置管理器)

  • PRIMARY_ROLE ()
    指定在此可用性副本当前拥有主角色(即它是主副本)时将要生效的角色特有设置。 在括号内指定一个或两个主角色选项。 如果指定两个选项,则使用以逗号分隔的列表。

    主角色选项如下所示:

    • ALLOW_CONNECTIONS = { READ_WRITE | ALL }
      指定给定的可用性副本(正在执行主要角色,也就是充当主副本)的数据库可以接受的来自客户端的连接类型,可以是以下之一:

      • READ_WRITE
        不允许 Application Intent 连接属性设置为 ReadOnly 的连接。 在 Application Intent 属性设置为 ReadWrite 或者未设置 Application Intent 连接属性时,将允许连接。 有关 Application Intent 连接属性的详细信息,请参阅将连接字符串关键字用于 SQL Server Native Client

      • ALL
        主副本中的数据库允许所有连接。 这是默认行为。

    • READ_ONLY_ROUTING_LIST = { (‘<server_instance> [ ,...n ] ) | NONE }
      指定一个以逗号分隔的服务器实例列表,这些实例承载在以辅助角色运行时满足以下要求的此可用性组的可用性副本:

      • 被配置为允许所有连接或只读连接(参阅上文 SECONDARY_ROLE 选项的 ALLOW_CONNECTIONS 参数)。

      • 定义了只读路由 URL(参阅上文 SECONDARY_ROLE 选项的 READ_ONLY_ROUTING_URL 参数)。

      READ_ONLY_ROUTING_LIST 的值如下:

      • <server_instance>
        指定承载可用性副本的 SQL Server 实例的地址,该副本在以辅助角色运行时是可读辅助副本。

        使用以逗号分隔的列表指定可能承载可读辅助副本的所有服务器实例。 只读路由将遵循在列表中指定服务器实例的顺序。 如果在副本的只读路由列表中包含副本的宿主服务器实例,通常将此服务器实例放在列表末尾比较好,这样在一个辅助副本可用时读意向连接将访问它。

      • NONE
        指定此可用性副本为主副本时将不支持只读路由。 这是默认行为。 与 MODIFY REPLICA ON 一起使用时,此值将禁用现有列表(如果有)。

  • SESSION_TIMEOUT **=**seconds
    以秒为单位指定会话超时期限。 如果不指定此选项,则在默认情况下,超时期限为 10 秒。 最小值为 5 秒。

    重要说明重要提示

    我们建议您将超时期限保持为 10 秒或更长。

    有关会话超时期限的详细信息,请参阅 AlwaysOn 可用性组概述 (SQL Server)

  • MODIFY REPLICA ON
    修改可用性组的任何副本。 要修改的副本列表包含每个副本的服务器实例地址和 WITH (…) 子句。

    仅在主副本上支持。

  • REMOVE REPLICA ON
    从可用性组中删除指定的辅助副本。 不能从可用性组删除当前的主副本。 在删除时,副本停止接收数据。 其辅助数据库从可用性组中删除,并且进入 RESTORING 状态。

    仅在主副本上支持。

    注意注意

    如果您在某一副本处于不可用或失败状态时删除该副本,则在其恢复联机状态时,将会发现不再属于该可用性组。

  • JOIN
    导致本地服务器实例承载指定可用性组中的辅助副本。

    仅在尚未加入可用性组的辅助副本上支持。

    有关详细信息,请参阅将辅助副本联接到可用性组 (SQL Server)

  • FAILOVER
    启动可用性组的手动故障转移,并且没有对您连接到的辅助副本的数据丢失。 对其输入故障转移目标故障转移命令的副本称为“故障转移目标”。 故障转移目标将接管主要角色,恢复各数据库的副本并且使它们作为新的主数据库处于联机状态。 以前的主副本同时转换为辅助角色,并且其数据库将成为辅助数据库且立即挂起。 在发生一系列故障后,这些角色可能来回切换。

    仅在当前与主副本同步的同步提交辅助副本上支持。 请注意,对于要同步的辅助副本,主副本也必须在同步提交模式下运行。

    注意注意

    故障转移命令将在故障转移目标接受它之后立即返回。 但是,在可用性组完成故障转移之后,数据库恢复操作将以异步方式执行。

    有关执行计划的手动故障转移的限制、先决条件和建议的信息,请参阅执行可用性组的计划手动故障转移 (SQL Server)

  • FORCE_FAILOVER_ALLOW_DATA_LOSS

    注意事项注意

    强制故障转移(这可能会涉及一些数据丢失)严格来说是一种灾难恢复方法。 因此,我们强烈建议您仅在以下情况下才强制故障转移:主副本不再运行、您愿意承担丢失数据的风险并且您必须立即将服务还原到可用性组。

    仅在其角色处于 SECONDARY 或 RESOLVING 状态的副本上支持。 --对其输入故障转移命令的副本称为“故障转移目标”。

    强制将可用性组故障转移到故障转移目标(可能会丢失数据)。 故障转移目标将接管主要角色,恢复各数据库的副本并且使它们作为新的主数据库处于联机状态。 在剩余的任何辅助副本上,在手动恢复前每个辅助数据库都处于挂起状态。 在以前的主副本可用前,它将切换到辅助角色,并且其数据库将成为挂起的辅助数据库。

    注意注意

    故障转移命令将在故障转移目标接受它之后立即返回。 但是,在可用性组完成故障转移之后,数据库恢复操作将以异步方式执行。

    有关强制故障转移的限制、先决条件和建议的信息,以及强制故障转移对可用性组中以前的主数据库的影响,请参阅执行可用性组的强制手动故障转移 (SQL Server)

  • ADD LISTENER dns_name’( <add_listener_option> )
    为此可用性组定义新的可用性组侦听器。 仅在主副本上支持。

    重要说明重要提示

    在创建第一个侦听器之前,我们强烈建议您阅读创建或配置可用性组侦听器 (SQL Server)

    为给定可用性组创建侦听器后,我们强烈建议您执行以下操作:

    • 请求您的网络管理员将该侦听器的 IP 地址保留为专用。

    • 将该侦听器的 DNS 主机名提供给应用程序开发人员,以便在请求与此可用性组的客户端连接时用于连接字符串中。

  • dns_name
    指定可用性组侦听器的 DNS 主机名。 在域和 NetBIOS 中,侦听器的 DNS 名称必须唯一。

    dns_name 是一个字符串值。 该名称只能包含字母数字字符、破折号 (-) 和连字符 (_),顺序不分先后。 DNS 主机名不区分大小写。 最大长度为 63 个字符。

    我们建议您指定一个有意义的字符串。 例如,对于名为 AG1 的可用性组,有意义的 DNS 主机名将是 ag1-listener。

    重要说明重要提示

    NetBIOS 只识别 dns_name 中的前 15 个字符。 如果您的两个 WSFC 群集均由同一 Active Directory 控制,而您试图使用超过 15 个字符的名称(具有相同的 15 字符前缀)在这两个群集中创建可用性组侦听器,此时您将收到错误,报告无法使虚拟网络名称资源联机。 有关 DNS 名称的前缀命名规则的信息,请参阅分配域名

  • <add_listener_option>
    ADD LISTENER 采用以下选项之一:

    • WITH DHCP [ ON { (‘four_part_ipv4_address’,‘four_part_ipv4_mask’) } ]
      指定可用性组侦听器将使用动态主机配置协议 (DHCP)。 或者,使用 ON 子句标识将在其上创建此侦听器的网络。 DHCP 限制为单个子网,该子网用于在可用性组中承载可用性副本的每个服务器实例。

      重要说明重要提示

      不建议在生产环境中使用 DHCP。 如果停止工作且 DHCP IP 租期已到,则需要额外的时间来注册与侦听器 DNS 名称相关联且影响客户端连接的新 DHCP 网络 IP 地址。 但是,DHCP 适合用于设置开发和测试环境以验证可用性组的基本功能并适合与应用程序集成。

      例如:

      WITH DHCP ON ('10.120.19.0','255.255.254.0')

    • WITH IP ( { (‘four_part_ipv4_address’,‘four_part_ipv4_mask’)(‘ipv6_address’) } [ , ...n ] ) [ , PORT **=**listener_port ]
      指定可用性组侦听器将使用一个或多个静态 IP 地址,而不使用 DHCP。 若要跨多个子网创建一个可用性组,每个子网均需要一个侦听器配置中的静态 IP 地址。 对于某一给定子网,静态 IP 地址可以是 IPv4 地址或 IPv6 地址。 请与您的网络管理员联系以获取将承载新可用性组的可用性副本的每个子网的静态 IP 地址。

      例如:

      WITH IP ( ('10.120.19.155','255.255.254.0') )

  • four_part_ipv4_address
    指定可用性组侦听器的由四部分组成的 IPv4 地址。 例如,10.120.19.155。

  • four_part_ipv4_mask
    指定可用性组侦听器的由四部分组成的 IPv4 掩码。 例如,255.255.254.0。

  • ipv6_address
    指定可用性组侦听器的 IPv6 地址。 例如,2001::4898:23:1002:20f:1fff:feff:b3a3。

  • PORT **=**listener_port
    指定要由通过 WITH IP 子句指定的可用性组侦听器使用的端口号 listener_port。 PORT 是可选的。

    支持默认端口号 1433。 但出于安全考虑,我们建议使用其他端口号。

    例如:WITH IP ( ('2001::4898:23:1002:20f:1fff:feff:b3a3') ) , PORT = 7777

  • MODIFY LISTENER dns_name  ( <modify_listener_option> )
    修改此可用性组的现有可用性组侦听器。 仅在主副本上支持。

  • <modify_listener_option>
    MODIFY LISTENER 采用以下选项之一:

    • ADD IP { (‘four_part_ipv4_address’,  four_part_ipv4_mask’)(‘dns_nameipv6_address’) }
      将指定的 IP 地址添加到由 dns_name 指定的可用性组侦听器。

    • PORT **=**listener_port
      请参阅本节前面对此参数的说明。

  • RESTART LISTENER dns_name
    重新启动与指定的 DNS 名称关联的侦听器。 仅在主副本上支持。

  • REMOVE LISTENER dns_name
    删除与指定的 DNS 名称关联的侦听器。 仅在主副本上支持。

  • OFFLINE
    使联机的可用性组脱机。 同步提交数据库没有数据丢失。

    在某一可用性组脱机后,其数据库将不可用于客户端,并且您无法使该可用性组重新联机。 因此,在将可用性组资源迁移到新 WSFC 群集时,仅在 AlwaysOn 可用性组 的跨群集迁移过程中使用 OFFLINE 选项。

    有关详细信息,请参阅 使可用性组脱机 (SQL Server)

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

先决条件和限制

有关针对可用性副本及其宿主服务器实例和计算机的先决条件和限制的信息,请参阅针对 AlwaysOn 可用性组的先决条件、限制和建议 (SQL Server)

有关针对 AVAILABILITY GROUP Transact-SQL 语句的限制的信息,请参阅 AlwaysOn 可用性组的 TRANSACT-SQL 语句概述 (SQL Server)

安全性

权限

对可用性组要求 ALTER AVAILABILITY GROUP 权限、CONTROL AVAILABILITY GROUP 权限、ALTER ANY AVAILABILITY GROUP 权限或 CONTROL SERVER 权限。

示例

A.将辅助副本联接到可用性组

下面的示例联接连接到 AccountsAG 可用性组的辅助副本。

ALTER AVAILABILITY GROUP AccountsAG JOIN;
GO

B.强制可用性组的故障转移

下面的示例强制 AccountsAG 可用性组故障转移到您所连接的辅助副本。

ALTER AVAILABILITY GROUP AccountsAG FORCE_FAILOVER_ALLOW_DATA_LOSS;
GO

请参阅

参考

CREATE AVAILABILITY GROUP (Transact-SQL)

ALTER DATABASE SET HADR (Transact-SQL)

DROP AVAILABILITY GROUP (Transact-SQL)

sys.availability_replicas (Transact-SQL)

sys.availability_groups (Transact-SQL)

概念

解决 AlwaysOn 可用性组配置问题 (SQL Server)

AlwaysOn 可用性组概述 (SQL Server)

可用性组侦听器、客户端连接和应用程序故障转移 (SQL Server)