共用方式為


針對 SQL Server 的 AlwaysOn 可用性群組配置進行疑難排解

本主題提供的資訊可協助您針對設定 AlwaysOn 可用性群組的伺服器實例時的典型問題進行疑難解答。 一般設定問題包括 AlwaysOn 可用性群組已停用、帳戶設定不正確、資料庫鏡像端點不存在、無法存取端點(SQL Server 錯誤 1418)、網路存取不存在,且聯結資料庫命令失敗(SQL Server 錯誤 35250)。

備註

請確定您符合 AlwaysOn 可用性群組的必要條件。 如需詳細資訊,請參閱 AlwaysOn 可用性群組的必要條件、限制和建議(SQL Server)。

本主題內容:

章節 說明
AlwaysOn 可用性群組未啟用 如果 SQL Server 的實例未啟用 Always On 可用性群組,則該實例不支援可用性群組的建立,也無法裝載任何可用性複本。
帳戶 討論正確設定 SQL Server 執行所在的帳戶的需求。
端點 討論如何診斷伺服器實例資料庫鏡像端點的問題。
系統名稱 摘要說明在端點 URL 中指定伺服器實例系統名稱的替代方法。
網路存取 記載裝載可用性復本的每個伺服器實例都必須能夠透過 TCP 存取其他伺服器實例的埠。
端點存取 (SQL Server 錯誤 1418) 包含這個 SQL Server 錯誤訊息的相關信息。
聯結資料庫失敗 (SQL Server 錯誤 35250) 討論無法將輔助資料庫聯結至可用性群組的可能原因和解決方式,因為與主要複本的連接不是作用中。
Read-Only 路由無法正常運作
相關工作 包含 SQL Server 2014 聯機叢書中任務導向的主題清單,特別與可用性群組組態的疑難排解相關。
相關內容 包含 SQL Server 在線叢書外部的相關資源清單。

AlwaysOn 可用性群組未啟用

必須在 SQL Server 2014 的每個實例上啟用 AlwaysOn 可用性群組功能。 如需詳細資訊,請參閱 啟用和停用 AlwaysOn 可用性群組 (SQL Server)

帳戶

必須正確設定 SQL Server 執行所在的帳戶。

  1. 帳戶是否具有正確的許可權?

    1. 如果合作夥伴以相同的網域用戶帳戶執行,則兩個 master 資料庫中會自動有正確的使用者登入。 這可簡化資料庫的安全性設定,並建議使用。

    2. 如果兩個伺服器實例以不同的帳戶執行,則必須在遠端伺服器實例的 master 中建立每個帳戶的登入,而且該登入必須獲得 CONNECT 許可權,才能連接到該伺服器實例的資料庫鏡像端點。 如需詳細資訊,請參閱設定 SQL Server 中資料庫鏡像或 AlwaysOn 可用性群組的登入帳戶

  2. 如果 SQL Server 是以內建帳戶執行,例如本機系統、本地服務或網路服務,或非網域帳戶,您必須使用憑證進行端點驗證。 如果您的服務帳戶使用相同網域中的網域帳戶,您可以選擇為所有複本位置上的每個服務帳戶授與 CONNECT 存取權,也可以使用憑證。 如需詳細資訊,請參閱使用資料庫鏡像端點的憑證(Transact-SQL)。

端點

端點必須正確設定。

  1. 請確定要裝載可用性復本的每個 SQL Server 實例(每個 複本位置)都有資料庫鏡像端點。 若要判斷指定的伺服器實例上是否存在資料庫鏡像端點,請使用 sys.database_mirroring_endpoints 目錄檢視。 如需詳細資訊,請參閱建立適用於 Windows 驗證的資料庫鏡像端點(Transact-SQL)允許資料庫鏡像端點使用輸出連線的憑證(Transact-SQL)。

  2. 檢查埠號碼是否正確。

    若要識別目前關聯於伺服器執行個體之資料庫鏡像端點的連接埠,請使用下列 Transact-SQL 陳述式:

    SELECT type_desc, port FROM sys.tcp_endpoints;
    GO
    
  3. 針對難以解釋的 AlwaysOn 可用性群組設定問題,建議您檢查每個伺服器實例,以判斷它是否在正確的埠上接聽。 如需驗證埠可用性的詳細資訊,請參閱 MSSQLSERVER_1418

  4. 請確定端點已啟動 (STATE=STARTED)。 在每個伺服器實例上,使用下列 Transact-SQL 語句:

    SELECT state_desc FROM sys.database_mirroring_endpoints
    

    如需 state_desc 資料列的詳細資訊,請參閱 sys.database_mirroring_endpoints (Transact-SQL)

    若要啟動端點,請使用下列 Transact-SQL 語句:

    ALTER ENDPOINT Endpoint_Mirroring 
    STATE = STARTED 
    AS TCP (LISTENER_PORT = <port_number>)
    FOR database_mirroring (ROLE = ALL);
    GO
    

    如需詳細資訊,請參閱 ALTER ENDPOINT (Transact-SQL)

  5. 請確定來自其他伺服器的登入具有 CONNECT 許可權。 若要判斷誰具有端點的 CONNECT 許可權,請在每個伺服器實例上使用下列 Transact-SQL 語句:

    SELECT 'Metadata Check';
    SELECT EP.name, SP.STATE, 
       CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id)) 
          AS GRANTOR, 
       SP.TYPE AS PERMISSION,
       CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id)) 
          AS GRANTEE 
       FROM sys.server_permissions SP , sys.endpoints EP
       WHERE SP.major_id = EP.endpoint_id
       ORDER BY Permission,grantor, grantee; 
    GO
    
    

系統名稱

針對端點 URL 中伺服器實例的系統名稱,您可以使用任何明確識別系統的名稱。 伺服器位址可以是系統名稱(如果系統位於相同網域中)、完整功能變數名稱或IP位址(最好是靜態IP位址)。 使用完全合格域名一定有效。 如需詳細資訊,請參閱在新增或修改可用性複本時指定端點 URL (SQL Server)

網路存取

裝載可用性複本的每個伺服器實例都必須能夠透過 TCP 存取其他伺服器實例的埠。 如果伺服器實例位於彼此不信任的不同網域(不受信任的網域),這尤其重要。

端點存取 (SQL Server 錯誤 1418)

此 SQL Server 訊息表示端點 URL 中指定的伺服器網路位址無法連線或不存在,而且建議您驗證網路位址名稱並重新發出命令。 如需詳細資訊,請參閱 MSSQLSERVER_1418

聯結資料庫失敗 (SQL Server 錯誤 35250)

本節討論無法將輔助資料庫加入至可用性群組的可能原因和解決方式,因為連接至主要副本的連線未啟動。

解決方法:

  1. 檢查防火牆設定,以查看是否允許裝載主要複本的伺服器實例與次要複本之間的埠通訊(預設為埠 5022)。

  2. 檢查網路服務帳戶是否具有端點的連線許可權。

Read-Only 路由無法正常運作

確認下列組態值設定,並視需要加以更正。

上。。。 行動 評論 連結
核取方塊 目前的主要副本 確定可用性群組接聽程式已上線。 若要確認接聽程式是否在線上:

SELECT * FROM sys.dm_tcp_listener_states;

若要重新啟動離線接聽程式:

ALTER AVAILABILITY GROUP myAG RESTART LISTENER 'myAG_Listener';
sys.dm_tcp_listener_states (Transact-SQL)

修改可用性群組 (Transact-SQL)
核取方塊 目前的主要複本 確定READ_ONLY_ROUTING_LIST只包含裝載可讀取次要複本的伺服器實例。 若要識別可讀取的次要複本: sys.availability_replicas (secondary_role_allow_connections_desc 資料行)

若要檢視只讀路由清單: sys.availability_read_only_routing_lists

若要變更唯讀路由清單: ALTER AVAILABILITY GROUP
sys.availability_replicas (Transact-SQL)

sys.availability_read_only_routing_lists (Transact-SQL)

修改可用性群組 (Transact-SQL)
核取方塊 read_only_routing_list中的每個複本 確定 Windows 防火牆不會封鎖READ_ONLY_ROUTING_URL埠。 - 設定適用於 Database Engine 存取的 Windows 防火牆
核取方塊 read_only_routing_list中的每個複本 在 SQL Server 組態管理員中,確認:

已啟用 SQL Server 遠端連線。

已啟用 TCP/IP。

IP 位址已正確設定。
- 檢視或變更伺服器屬性 (SQL Server)

設定伺服器接聽特定 TCP 通訊埠 (SQL Server 組態管理員)
核取方塊 read_only_routing_list中的每個複製品 請確定 READ_ONLY_ROUTING_URL(TCP://system-address:port)包含正確的完整域名(FQDN)和埠號碼。 - 計算 AlwaysOn 的唯讀路由URL

sys.availability_replicas (Transact-SQL)

修改可用性群組 (Transact-SQL)
核取方塊 用戶端系統 確認客戶端驅動程式支援唯讀路由。 - AlwaysOn 客戶端連線 (SQL Server)

相關工作

相關內容

另請參閱

資料庫鏡像和 AlwaysOn 可用性群組的傳輸安全性(SQL Server)用戶端網路配置必備條件、限制和建議(AlwaysOn 可用性群組 SQL Server)