CREATE AVAILABILITY GROUP (Transact-SQL)

如果为 AlwaysOn 可用性组功能启用了 SQL Server 的实例,将创建新的可用性组。

重要说明重要提示

在要用作新可用性组的初始主副本的 SQL Server 实例上执行 CREATE AVAILABILITY GROUP。 此服务器实例必须驻留在 Windows Server 故障转移群集 (WSFC) 节点上。

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

语法

CREATE AVAILABILITY GROUP group_name
   WITH (<with_option_spec> [ ,...n ] )
   FOR [ DATABASE database_name [ ,...n ] ]
   REPLICA ON <add_replica_spec> [ ,...n ]
   [ LISTENER ‘dns_name’ ( <listener_option> ) ]
[ ; ]

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

<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 = integer 

<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’
     }

参数

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

  • 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 在数据库级别不执行运行状况检查。

  • DATABASE database_name
    指定本地 SQL Server 实例(也就是您正在其上创建可用性组的服务器实例)上的一个或多个用户数据库的列表。 您可以为一个可用性组指定多个数据库,但每个数据库只能属于一个可用性组。 有关可用性组可支持的数据库类型的信息,请参阅针对 AlwaysOn 可用性组的先决条件、限制和建议 (SQL Server)。 若要找出已属于某个可用性组的本地数据库,请参阅 sys.databases 目录视图中的 replica_id 列。

    DATABASE 子句是可选的。 如果省略此参数,新的可用性组将为空。

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

    注意注意

    然后,您可以将承载当前主副本的服务器实例上的合格数据库添加到可用性组。 还可以从可用性组中删除数据库。 有关详细信息,请参阅 ALTER AVAILABILITY GROUP (Transact-SQL)

  • REPLICA ON
    指定一到五个 SQL Server 实例,以便承载新的可用性组中的可用性副本。 通过在每个副本的服务器实例地址后追加 WITH (…) 子句来指定每个副本。 必须至少指定您的本地服务器实例,该实例将成为初始主副本。 还可以选择指定最多四个辅助副本。

    您需要将每个辅助副本联接到可用性组。 有关详细信息,请参阅 ALTER AVAILABILITY GROUP (Transact-SQL)

    注意注意

    如果您在创建可用性组时指定少于四个辅助副本,则随时可以使用 ALTER AVAILABILITY GROUP Transact-SQL 语句添加其他的辅助副本。 还可以使用此语句从现有的可用性组中删除任何辅助副本。

  • <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 承载且已启用 HADR 服务的 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 路径,该实例将承载您在当前 REPLICA ON 子句中定义的可用性副本。

    ENDPOINT_URL 子句是必需的。 有关详细信息,请参阅在添加或修改可用性副本时指定端点 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 子句是必需的。 有关详细信息,请参阅可用性模式(AlwaysOn 可用性组)

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

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

      注意注意

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

    • MANUAL
      允许数据库管理员执行的手动故障转移或强制手动故障转移(通常称为“强制故障转移”)。

    FAILOVER_MODE 子句是必需的。 在不同条件下支持两种手动故障转移:没有数据丢失的手动故障转移和强制故障转移(可能丢失数据)。 有关详细信息,请参阅故障转移和故障转移模式(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
        指定此可用性副本为主副本时将不支持只读路由。 这是默认行为。

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

    重要说明重要提示

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

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

  • LISTENER dns_name ( <listener_option> )
    为此可用性组定义新的可用性组侦听器。 LISTENER 是一个可选参数。

    重要说明重要提示

    在创建第一个侦听器之前,我们强烈建议您阅读创建或配置可用性组侦听器 (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 名称的前缀命名规则的信息,请参阅分配域名

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

    • 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

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

先决条件和限制

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

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

安全性

权限

需要 sysadmin 固定服务器角色的成员身份,以及 CREATE AVAILABILITY GROUP 服务器权限、ALTER ANY AVAILABILITY GROUP 权限或 CONTROL SERVER 权限。

示例

A.针对辅助副本、灵活的故障转移策略和连接访问配置备份

下面的示例为两个用户数据库 ThisDatabase 和 ThatDatabase 创建了名为 MyAg 的可用性组。 下表总结了为作为一个整体为可用性组设置的选项指定的值。

组选项

设置

说明

AUTOMATED_BACKUP_PREFERENCE

SECONDARY

此自动备份首选项指示应在辅助副本上发生备份,但在主副本是唯一联机的副本时(这是默认行为)除外。 为使 AUTOMATED_BACKUP_PREFERENCE 设置生效,您需要编写可用性数据库上备份作业的脚本,以便考虑自动备份首选项。

FAILURE_CONDITION_LEVEL

3

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

HEALTH_CHECK_TIMEOUT

600000

此运行状况检查超时值(60 秒)指定 WSFC 群集将为 sp_server_diagnostics 系统存储过程等待 60000 毫秒,以便自动返回与承载同步提交副本的服务器实例有关的服务器运行状况信息,之后,群集将认为该主机服务器实例速度慢或已挂起。 (默认值为 30000 毫秒。)

三个可用性副本将由名为 COMPUTER01、COMPUTER02 和 COMPUTER03 的计算机上的默认服务器实例承载。 下表总结了为每个副本的副本选项指定的值。

副本选项

COMPUTER01 上的设置

COMPUTER02 上的设置

COMPUTER03 上的设置

说明

ENDPOINT_URL

TCP://COMPUTER01:5022

TCP://COMPUTER02:5022

TCP://COMPUTER03:5022

在这个示例中,系统处于相同的域中,因此,端点 URL 可以使用计算机的名称作为系统地址。

AVAILABILITY_MODE

SYNCHRONOUS_COMMIT

SYNCHRONOUS_COMMIT

ASYNCHRONOUS_COMMIT

两个副本使用同步提交模式。 同步时,它们支持故障转移而不会丢失数据。 第三个副本,将使用异步提交可用性模式。

FAILOVER_MODE

AUTOMATIC

AUTOMATIC

MANUAL

同步提交副本支持自动故障转移和计划的手动故障转移。 同步提交可用性模式副本支持仅限强制的手动故障转移。

BACKUP_PRIORITY

30

30

90

与同步提交副本相比,将更高的优先级 90 分配给异步提交副本。 备份往往发生在将承载异步提交副本的服务器实例上。

SECONDARY_ROLE

( ALLOW_CONNECTIONS = NO,

READ_ONLY_ROUTING_URL = 'TCP://COMPUTER01:1433' )

( ALLOW_CONNECTIONS = NO,

READ_ONLY_ROUTING_URL = 'TCP://COMPUTER02:1433' )

( ALLOW_CONNECTIONS = READ_ONLY, READ_ONLY_ROUTING_URL = 'TCP://COMPUTER03:1433' )

只有异步提交副本作为可读的辅助副本。

指定计算机名称和默认数据库引擎端口号 (1433)。

该参数可选。

PRIMARY_ROLE

( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (COMPUTER03) )

( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (COMPUTER03) )

( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = NONE )

在主角色中,所有副本将都拒绝读意向连接尝试。

如果本地副本正在辅助角色下运行,会将读意向连接请求路由到 COMPUTER03。 当该副本在主角色下运行时,禁用只读路由。

该参数可选。

SESSION_TIMEOUT

10

10

10

此示例指定默认会话超时值 (10)。 该参数可选。

最后,该示例指定可选的 LISTENER 子句,以便为新的可用性组创建可用性组侦听器。 将为此侦听器指定唯一的 DNS 名称 MyAgListenerIvP6。 两个副本位于不同的子网,因此侦听器必须使用静态 IP 地址。 对于这两个可用性副本中的每一个,WITH IP 子句都指定一个将使用 IPv6 格式的静态 IP 地址 2001:4898:f0:f00f::cf3c 和 2001:4898:e0:f213::4ce2。 此示例还指定使用可选的 PORT 参数来将端口 60173 指定为侦听器端口。

CREATE AVAILABILITY GROUP MyAg 
   WITH (
      AUTOMATED_BACKUP_PREFERENCE = SECONDARY,
      FAILURE_CONDITION_LEVEL  =  3, 
      HEALTH_CHECK_TIMEOUT = 600000
       )
   
   FOR 
      DATABASE  ThisDatabase, ThatDatabase 
   REPLICA ON 
      'COMPUTER01' WITH 
         (
         ENDPOINT_URL = 'TCP://COMPUTER01:5022',
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
         FAILOVER_MODE = AUTOMATIC,
         BACKUP_PRIORITY = 30,
         SECONDARY_ROLE (ALLOW_CONNECTIONS = NO, 
            READ_ONLY_ROUTING_LIST = (COMPUTER03) ), 
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE, 
            READ_ONLY_ROUTING_LIST = (COMPUTER03) ),
         SESSION_TIMEOUT = 10
         ), 
         
      'COMPUTER02' WITH 
         (
         ENDPOINT_URL = 'TCP://COMPUTER02:5022',
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
         FAILOVER_MODE = AUTOMATIC,
         BACKUP_PRIORITY = 30,
         SECONDARY_ROLE (ALLOW_CONNECTIONS = NO, 
            READ_ONLY_ROUTING_URL = 'TCP://COMPUTER02:1433' ),
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE, 
            READ_ONLY_ROUTING_LIST = (COMPUTER03) ),
         SESSION_TIMEOUT = 10
         ), 
         
      'COMPUTER03' WITH 
         (
         ENDPOINT_URL = 'TCP://COMPUTER03:5022',
         AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
         FAILOVER_MODE =  MANUAL,
         BACKUP_PRIORITY = 90,
         SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY, 
            READ_ONLY_ROUTING_URL = 'TCP://COMPUTER03:1433' ),
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE, 
            READ_ONLY_ROUTING_LIST = NONE ),
         SESSION_TIMEOUT = 10
         )

LISTENER ‘MyAgListenerIvP6’ ( WITH IP ( ('2001:db88:f0:f00f::cf3c'),('2001:4898:e0:f213::4ce2') ) , PORT = 60173 ); 
GO

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

相关任务

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

请参阅

参考

ALTER AVAILABILITY GROUP (Transact-SQL)

ALTER DATABASE SET HADR (Transact-SQL)

DROP AVAILABILITY GROUP (Transact-SQL)

概念

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

AlwaysOn 可用性组概述 (SQL Server)

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