共用方式為


疑難排解 AlwaysOn 可用性群組組態 (SQL Server)

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

注意

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

本主題內容:

區段 描述
AlwaysOn 可用性群組未啟用 如果未針對Always On可用性群組啟用SQL Server實例,實例不支援可用性群組建立,而且無法裝載任何可用性複本。
帳戶 討論正確設定在底下執行 SQL Server 之帳戶的需求。
端點 討論如何診斷伺服器執行個體的資料庫鏡像端點問題。
系統名稱 摘要說明在端點 URL 中指定伺服器執行個體之系統名稱的替代方式。
網路存取 說明裝載可用性複本的每個伺服器執行個體必須要透過 TCP 存取其他伺服器執行個體之通訊埠的需求。
端點存取 (SQL Server 錯誤 1418) 包含有關此 SQL Server 錯誤訊息的資訊。
聯結資料庫失敗 (SQL Server 錯誤 35250) 討論因為與主要複本的連接不在作用中,次要資料庫聯結至可用性群組失敗的可能原因和解決方案。
唯讀路由未正確運作
相關工作 包含SQL Server 2014《線上叢書》中的工作導向主題清單,與可用性群組組態疑難排解特別相關。
相關內容 包含《SQL Server 線上叢書》外部的相關資源清單。

AlwaysOn 可用性群組未啟用

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

帳戶

必須正確設定用來執行 SQL Server 的帳戶。

  1. 帳戶有正確的權限嗎?

    1. 如果夥伴是以相同的網域使用者帳戶身分執行,則兩個 master 資料庫中會自動存在正確的使用者登入。 這樣可簡化資料庫的安全性組態,建議您使用。

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

  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. 對於難以解釋的Always On可用性群組設定問題,建議您檢查每個伺服器實例,以判斷它是否接聽正確的埠。 如需驗證通訊埠可用性的相關資訊,請參閱 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. 檢查網路服務帳戶是否有端點的連接權限。

唯讀路由未正確運作

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

開啟... 動作 註解 連結
核取方塊 目前主要複本 確定可用性群組接聽程式在線上。 確認接聽程式是否在線上:

SELECT * FROM sys.dm_tcp_listener_states;

重新啟動離線接聽程式:

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

ALTER AVAILABILITY GROUP (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)

ALTER AVAILABILITY GROUP (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-addressport) 包含正確的完整功能變數名稱, (FQDN) 和埠號碼。 - 計算 AlwaysOn 的 read_only_routing_url

sys.availability_replicas (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)
核取方塊 用戶端系統 確認用戶端驅動程式支援唯讀路由。 - AlwaysOn 用戶端連接性 (SQL Server)

相關工作

相關內容

另請參閱

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