Service Broker mit AlwaysOn-Verfügbarkeitsgruppen (SQL Server)

Gilt für:SQL Server

Dieses Thema enthält Informationen, wie Sie Service Broker in Always On-Verfügbarkeitsgruppen zur Verwendung mit SQL Serverkonfigurieren.

Empfangen von Remotenachrichten von anderen Service Broker-Instanzen

  1. Stellen Sie sicher, dass die Verfügbarkeitsgruppe über einen Listener verfügt.

    Weitere Informationen finden Sie unter Erstellen oder Konfigurieren eines Verfügbarkeitsgruppenlisteners (SQL Server).

  2. Stellen Sie sicher, dass der Service Broker-Endpunkt vorhanden ist und ordnungsgemäß konfiguriert wird.

    Konfigurieren Sie für jede SQL Server -Instanz, von der ein Verfügbarkeitsreplikat für die Verfügbarkeitsgruppe gehostet wird, den Service Broker-Endpunkt wie folgt:

    • Legen Sie LISTENER_IP auf 'ALL' fest. Durch diese Einstellung werden Verbindungen für eine beliebige gültige IP-Adresse aktiviert, die an den Verfügbarkeitsgruppenlistener gebunden ist.

    • Legen Sie den Service Broker-PORT auf allen Hostserverinstanzen auf die gleiche Portnummer fest.

      Tipp

      Um die Portnummer des Service Broker-Endpunkts für eine bestimmte Serverinstanz anzuzeigen, fragen Sie die port -Spalte der sys.tcp_endpoint s-Katalogsicht ab, in der type_desc = 'SERVICE_BROKER' ist.

    Im folgenden Beispiel wird ein von Windows authentifizierter Service Broker-Endpunkt erstellt, der den Service Broker-Standardport (4022) verwendet und auf alle gültigen IP-Adressen lauscht.

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

    Weitere Informationen finden Sie unter CREATE ENDPOINT (Transact-SQL).

    Hinweis

    Der SQL Server Service Broker ist nicht mit Multisubnetzen kompatibel. Legen Sie RegisterAllProvidersIP auf „0“ (null) fest, und stellen Sie sicher, dass der Cluster über die erforderlichen Berechtigungen in DNS verfügt, um statische IP-Adressen zu verwenden. Weitere Informationen finden Sie unter Konfigurieren des Verfügbarkeitsgruppenlisteners. Der Service Broker verzögert Meldungen möglicherweise mit dem Status „CONVERSING“, weil er versucht, eine deaktivierte IP-Adresse zu verwenden.

  3. Erteilen Sie die CONNECT-Berechtigung für den Endpunkt.

    Erteilen Sie PUBLIC oder einem Anmeldenamen die CONNECT-Berechtigung für den Service Broker-Endpunkt.

    Im folgenden Beispiel wird PUBLIC die Verbindungsberechtigung für einen Service Broker-Endpunkt mit dem Namen broker_endpoint erteilt.

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

    Weitere Informationen finden Sie unter GRANT (Transact-SQL).

  4. Stellen Sie sicher, dass in „msdb“ entweder eine AutoCreatedLocal-Route oder eine Route zum angegebenen Dienst enthalten ist.

    Hinweis

    Standardmäßig enthält jede Benutzerdatenbank einschließlich msdbdie Route AutoCreatedLocal. Diese Route stimmt mit beliebigen Dienstnamen und Brokerinstanzen überein und gibt an, dass die Nachricht innerhalb der aktuellen Instanz übermittelt werden muss. AutoCreatedLocal hat eine niedrigere Priorität als Routen, in denen explizit ein bestimmter Dienst angegeben ist, der mit einer Remoteinstanz kommuniziert.

    Weitere Informationen zum Erstellen von Routen finden Sie unter Service Broker-Routingbeispiele (in der SQL Server 2008 R2 (10.50.x)-Version der Onlinedokumentation) und CREATE ROUTE (Transact-SQL).

Anforderungen zum Senden von Nachrichten an einen Remotedienst in einer Verfügbarkeitsgruppe

  1. Erstellen Sie eine Route zum Zieldienst.

    Konfigurieren Sie die Route wie folgt:

    • Legen Sie ADDRESS auf die IP-Adresse des Listeners der Verfügbarkeitsgruppe fest, von der die Dienstdatenbank gehostet wird.

    • Legen Sie PORT auf den Port fest, den Sie im Service Broker-Endpunkt jeder SQL Server-Remoteinstanz angegeben haben.

    Im folgenden Beispiel wird eine Route mit dem Namen RouteToTargetService für den ISBNLookupRequestService -Dienst erstellt. Die Route hat den Verfügbarkeitsgruppenlistener MyAgListenerzum Ziel, der den Port 4022 verwendet.

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

    Weitere Informationen finden Sie unter CREATE ROUTE (Transact-SQL)konfigurieren.

  2. Stellen Sie sicher, dass in „msdb“ entweder eine AutoCreatedLocal-Route oder eine Route zum angegebenen Dienst enthalten ist. (Weitere Informationen finden Sie unter Anforderungen, damit ein Dienst in einer Verfügbarkeitsgruppe Remotenachrichten empfangen kannweiter oben in diesem Thema.)

Related Tasks

Weitere Informationen

Übersicht über Always On-Verfügbarkeitsgruppen (SQL Server)
Verfügbarkeitsgruppenlistener, Clientkonnektivität und Anwendungsfailover (SQL Server)
SQL Server Service Broker