Problembehandlung bei Routing und Nachrichtenübermittlung

In diesem Abschnitt werden Vorschläge zum Beheben häufiger Symptome im Zusammenhang mit Routing und Nachrichtenübermittlung bereitgestellt.

Symptom: Nachrichten bleiben in der Übermittlungswarteschlange

Stellen Sie sicher, dass die Service Broker-Nachrichtenübermittlung in der Datenbank aktiviert ist. Die is_broker_enabled-Spalte von sys.databases zeigt, ob die Brokernachrichtenübermittlung aktiviert ist, wie im folgenden Beispiel dargestellt:

SELECT is_broker_enabled FROM sys.databases
WHERE database_id = DB_ID() ;

Die Brokernachrichtenübermittlung kann deaktiviert werden, um zu verhindern, dass Nachrichten der falschen Datenbank übermittelt werden. Weitere Informationen zur Service Broker-Nachrichtenübermittlung finden Sie unter Verwalten von Service Broker-Identitäten. Weitere Informationen zum Aktivieren der Service Broker-Nachrichtenübermittlung finden Sie unter Vorgehensweise: Aktivieren von Service Broker-Nachrichtenübermittlung in Datenbanken (Transact-SQL).

Wenn die Service Broker-Nachrichtenübermittlung aktiviert ist, überprüfen Sie die transmission_status-Spalte in der sys.transmission_queue-Katalogsicht auf die Nachrichten. Häufige Fehlermeldungen sind folgende:

Meldung Beschreibung

Dem Zieldienstnamen für diese Konversation entspricht keine Route.

Von Service Broker wurde keine Route zum angegebenen Dienst gefunden.

Die Service Broker-Instanz des Ziels ist nicht erreichbar.

Die Nachricht konnte von Service Broker nicht an den Ziel-Service Broker übermittelt werden.

Transportebene ist nicht verfügbar.

Es ist kein Service Broker-Endpunkt in der Instanz vorhanden, oder der Service Broker-Endpunkt wurde nicht erfolgreich gestartet.

Zielwarteschlange ist deaktiviert.

Die Warteschlange, die vom Zieldienst verwendet wird, weist den Status OFF auf. Einer Warteschlange mit dem Status OFF werden von Service Broker keine neuen Nachrichten hinzugefügt.

Fehler beim Empfangen von Daten: '10054(Eine vorhandene Verbindung wurde vom Remotehost geschlossen.)'.

Die Remoteseite der Konversation hat die TCP/IP-Verbindung angenommen, aber die Verbindung geschlossen, bevor eine Nachricht gesendet werden konnte.

(Keine)

Es wurde von Service Broker noch nicht versucht, die Nachricht zu senden. Dies kann darauf hinweisen, dass die Service Broker-Nachrichtenübermittlung in der Datenbank nicht aktiviert ist.

Symptom: Route ist vorhanden, Übertragungsfehler besagt: Dem Zieldienstnamen für diese Konversation entspricht keine Route

Wenn die Route nach der Nachricht erstellt wurde, ist die häufigste Ursache für dieses Symptom, dass nach dem Erstellen der Route nicht erneut versucht wurde, die Nachricht zu übermitteln. Weitere Informationen zu erneuten Versuchen finden Sie unter Service Broker-Routing und -Netzwerk.

Überprüfen Sie, ob der in der Nachricht angegebene Dienstname genau mit dem in der Route angegebenen Dienstnamen übereinstimmt. Von Service Broker wird ein byteweiser binärer Vergleich für den Abgleich von Dienstnamen verwendet. Wenn eine Route vorhanden ist, in der der Dienstname angegeben ist, besteht eine Methode zum Überprüfen dieses Vergleichs darin, eine ähnliche Abfrage wie die folgende auszuführen:

SELECT N'No Exact Match' = tq.to_service_name
FROM sys.transmission_queue AS tq
WHERE NOT EXISTS
    (SELECT remote_service_name
     FROM sys.routes AS routes
     WHERE tq.to_service_name = routes.remote_service_name) ;

Für die Dienstnamen im Resultset gibt es keine genaue Übereinstimmung in der Routingtabelle für die Datenbank. Beachten Sie, dass eine Route, in der kein Dienstname angegeben ist, mit jedem beliebigen Dienstnamen übereinstimmt. Weitere Informationen zum Routing finden Sie unter Service Broker-Routing.

Wenn in der Nachricht ein Brokerinstanzbezeichner angegeben ist, überprüfen Sie, ob durch die Route derselbe Brokerinstanzbezeichner oder kein Brokerinstanzbezeichner angegeben wird.

Überprüfen Sie, ob die Route abgelaufen ist. Die Lebensdauerspalte der sys.routes-Katalogsicht enthält Ablaufdatum und -zeit für die Route.

Symptom: Übertragungsfehler besagt, dass die Service Broker-Instanz des Ziels nicht erreichbar ist

Das Ziel hat die Nachricht nicht angenommen. Dies kann darauf hinweisen, dass der angegebene Dienstname nicht mit dem Namen eines Dienstes übereinstimmt, den die SQL Server-Zielinstanz hostet, oder dass das Ziel keine Route für den Dienst enthält. Überprüfen Sie zur Problembehandlung die Routing- und Dienstkonfiguration für das Ziel.

Symptom: Übertragungsfehler besagt, dass die Transportebene nicht verfügbar ist

Überprüfen Sie, ob ein Service Broker-Endpunkt vorhanden und der Status des Endpunkts STARTED ist. Erstellen Sie gegebenenfalls einen Endpunkt. Weitere Informationen zu Service Broker-Endpunkten finden Sie unter Service Broker-Endpunkte. Weitere Informationen zum Erstellen eines Endpunkts finden Sie unter Vorgehensweise: Aktivieren des Service Broker-Netzwerks (Transact-SQL).

Symptom: Übertragungsfehler besagt: Eine vorhandene Verbindung wurde vom Remotehost geschlossen

Die Transportsicherheit kann falsch konfiguriert sein, oder in der TCP/IP-Adresse für die Route ist ein Port angegeben, der von einem anderen Dienst als Service Broker verwendet wird. Beachten Sie, dass das Tabular Data Stream-Protokoll (TDS) von Service Broker nicht verwendet wird. Bei der Route muss der Port angeben sein, der dem vom Service Broker-Endpunkt auf der SQL Server-Remoteinstanz verwendeten Port entspricht.

Überprüfen Sie die Service Broker-Endpunktkonfiguration, um sicherzustellen, dass die beiden Instanzen kompatible Netzwerksicherheitseinstellungen aufweisen. Wenn vom Service Broker-Endpunkt für eine Instanz REQUIRED oder ENABLED angegeben wird, darf beim Service Broker-Endpunkt für die andere Instanz nicht NONE angegeben sein.

Überprüfen Sie Zertifikate, Benutzer und Berechtigungen auf die Service Broker-Transportsicherheit. Die Konfiguration für die Transportsicherheit wird im Thema Service Broker-Transportsicherheit erläutert.

Siehe auch

Aufgaben

Vorgehensweise: Aktivieren des Service Broker-Netzwerks (Transact-SQL)

Konzepte

Service Broker-Routing und -Netzwerk
Service Broker-Endpunkte
Service Broker-Routing
Starten und Beenden einer Warteschlange

Andere Ressourcen

sys.databases (Transact-SQL)
sys.transmission_queue (Transact-SQL)
sys.routes (Transact-SQL)
sys.service_broker_endpoints (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005