Share via


CREATE AVAILABILITY GROUP (Transact-SQL)

如果 SQL Server 執行個體啟用了 AlwaysOn 可用性群組 功能,則會建立新的可用性群組。

重要事項重要事項

在您預定要做為新可用性群組的初始主要複本的 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 值會針對給定群組定義「具彈性的容錯移轉原則」(Flexible Failover Policy)。 這個具彈性的容錯移轉原則讓您能夠更精確控制哪些條件必須造成自動容錯移轉。 如需詳細資訊,請參閱<可用性群組自動容錯移轉的彈性容錯移轉原則 (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 伺服器執行個體 (一個到五個)。 每個複本是由後面接著 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 是選擇性的。 執行個體名稱不區分大小寫。 在獨立伺服器執行個體上,這個值名稱與執行 SELECT @@SERVERNAME 所傳回的值相同。

    • \
      這個分隔符號只用於指定 instance_name 時,以便與 system_name 或 FCI_network_name 分隔。

    如需有關 WSFC 節點和伺服器執行個體之必要條件的詳細資訊,請參閱<AlwaysOn 可用性群組的必要條件、限制和建議 (SQL Server)>。

  • ENDPOINT_URL = 'TCP://system-address:port'
    在將要裝載您在目前的 REPLICA ON 子句中定義之可用性複本的 SQL Server 執行個體上,指定資料庫鏡像端點的 URL 路徑。

    ENDPOINT_URL 子句是必要的。 如需詳細資訊,請參閱<在加入或修改可用性複本時指定端點 URL (SQL Server)>。

  • 'TCP://system-address:port'
    指定 URL 以指定端點 URL 或唯讀的路由 URL。 URL 參數如下所示:

    • system-address
      這是明確識別目的地電腦系統的字串,例如系統名稱、完整網域名稱或 IP 位址。

    • port
      這是與夥伴伺服器執行個體之鏡像端點相關聯的通訊埠編號 (針對 ENDPOINT_URL 選項),或伺服器執行個體之 Database Engine 所使用的通訊埠編號 (針對 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
      可讓資料庫管理員執行規劃的手動容錯移轉或強制手動容錯移轉 (通常稱為「強制容錯移轉」(Forced Failover))。

    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 Database Engine 接聽的 URL。 SQL Server Database Engine 的預設執行個體通常會接聽 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 主機名稱。 接聽程式的 DNS 名稱在網域和 NetBIOS 中都必須是唯一的。

    dns_name 為字串值。 此名稱只能包含英數字元、虛線 (-) 和連字號 (_) (順序不拘)。 DNS 主機名稱不區分大小寫。 最大長度是 63 個字元。

    我們建議您指定一個有意義的字串。 例如,如果是名為 AG1 的可用性群組,有意義的 DNS 主機名稱會是 ag1-listener。

    重要事項重要事項

    NetBIOS 只會辨識 DNS 名稱中的前 15 個字元。 如果您有兩個由相同 Active Directory 所控制的 WSFC 叢集,而且嘗試使用超過 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 叢集將等待 60000 毫秒,讓 sp_server_diagnostics 系統預存程序傳回關於伺服器執行個體的伺服器健全狀況資訊,這個伺服器執行個體會在叢集假設主機伺服器執行個體緩慢或無回應之前,自動主控同步認可的複本 (預設值為 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' )

只有非同步認可的複本會當做可讀取的次要複本。

指定電腦名稱和預設的 Database Engine 通訊埠編號 (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)