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
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).
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.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).
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
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 denISBNLookupRequestService
-Dienst erstellt. Die Route hat den VerfügbarkeitsgruppenlistenerMyAgListener
zum 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.
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
Erstellen oder Konfigurieren eines Verfügbarkeitsgruppenlisteners (SQL Server).
Erstellung und Konfiguration von Verfügbarkeitsgruppen (SQL Server)
Weitere Informationen
Übersicht über Always On-Verfügbarkeitsgruppen (SQL Server)
Verfügbarkeitsgruppenlistener, Clientkonnektivität und Anwendungsfailover (SQL Server)
SQL Server Service Broker