Service Broker 與 AlwaysOn 可用性群組 (SQL Server)

適用於:SQL Server

此主題包含如何設定 Service Broker 以在 SQL Server 中使用 Always On 可用性群組的相關資訊。

從其他 Service Broker 執行個體接收遠端訊息

  1. 確定可用性群組擁有接聽程式。

    如需詳細資訊,請參閱建立或設定可用性群組接聽程式 (SQL Server)

  2. 確定 Service Broker 端點存在而且設定正確。

    在裝載可用性群組之可用性複本的每個 SQL Server 執行個體上,依照下列方式設定 Service Broker 端點:

    • 將 LISTENER_IP 設定為 'ALL'。 這項設定會針對繫結至可用性群組接聽程式的任何有效 IP 位址啟用連接。

    • 將所有主機伺服器執行個體的 Service Broker PORT 設定為相同的通訊埠編號。

      提示

      若要檢視指定伺服器執行個體之 Service Broker 端點的通訊埠編號,請查詢 sys.tcp_endpoints 目錄檢視的 port 資料行,其中 type_desc = 'SERVICE_BROKER'。

    下列範例會建立使用預設 Service Broker 通訊埠 (4022) 並且接聽所有有效 IP 位址的 Windows 驗證 Service Broker 端點。

    CREATE ENDPOINT [SSBEndpoint]  
        STATE = STARTED  
        AS TCP  (LISTENER_PORT = 4022, LISTENER_IP = ALL )  
        FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS)  
    

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

    注意

    SQL Server Service Broker 不是多重子網路感知。 將 RegisterAllProvidersIP 設為 0,並驗證叢集在 DNS 中具備使用靜態 IP 位址的必要權限。 請參閱設定可用性群組接聽程式深入了解。 Service Broker 可能會延遲訊息,在顯示 "CONVERSING" 的狀態下,嘗試使用已停用的 IP 位址。

  3. 授與端點的 CONNECT 權限。

    將 Service Broker 端點的 CONNECT 權限授與 PUBLIC 或登入。

    下列範例會將名為 broker_endpoint 之 Service Broker 端點的連接授與 PUBLIC。

    GRANT CONNECT ON ENDPOINT::[broker_endpoint] TO [PUBLIC]  
    

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

  4. 確定 msdb 包含 AutoCreatedLocal 路由或特定服務的路由。

    注意

    根據預設,每個使用者資料庫 (包括 msdb) 都包含 AutoCreatedLocal路由。 此路由會比對所有服務名稱和 Broker 執行個體,並指定訊息應在目前執行個體內傳遞。 AutoCreatedLocal 的優先權低於明確指定與遠端執行個體通訊之特定服務的路由。

    如需建立路由的相關資訊,請參閱 Service Broker 路由範例 (在 SQL Server 2008 R2 (10.50.x) 版本的《線上叢書》中) 和CREATE ROUTE (Transact-SQL) 的相關資訊

將訊息傳送至可用性群組中之遠端服務的需求

  1. 建立目標服務的路由。

    依照下列方式設定路由:

    • 將 ADDRESS 設定為裝載服務資料庫之可用性群組的接聽程式 IP 位址。

    • 將 PORT 設定為您在每個遠端 SQL Server 執行個體之 Service Broker 端點中指定的通訊埠。

    下列範例會針對 RouteToTargetService 服務建立名為 ISBNLookupRequestService 的路由。 此路由會以使用通訊埠 4022 的可用性群組接聽程式 MyAgListener做為目標。

    CREATE ROUTE [RouteToTargetService] WITH   
    SERVICE_NAME = 'ISBNLookupRequestService',   
    ADDRESS = 'TCP://MyAgListener:4022';  
    
    

    如需詳細資訊,請參閱 CREATE ROUTE (Transact-SQL) 的相關資訊。

  2. 確定 msdb 包含 AutoCreatedLocal 路由或特定服務的路由。 (如需詳細資訊,請參閱本主題稍早的 讓可用性群組中之服務接收遠端訊息的需求。)

相關工作

另請參閱

AlwaysOn 可用性群組概觀 (SQL Server)
可用性群組接聽程式、用戶端連線及應用程式容錯移轉 (SQL Server)
SQL Server Service Broker