Verwalten von Service Broker-Identitäten
Jede Datenbank enthält einen eindeutigen Bezeichner zum Weiterleiten von Service Broker-Nachrichten an diese Datenbank. In diesem Thema werden die Broker-Identitäten, der Service Broker-Schutz vor einer fehlerhaften Weiterleitung von Nachrichten sowie die verfügbaren Optionen zum Verwalten von Broker-Identitäten beschrieben.
Service Broker-Bezeichner
Jede Datenbank enthält einen Service Broker-Bezeichner. Die Spalte service_broker_guid der Katalogsicht sys.databases zeigt den Service Broker-Bezeichner für jede Datenbank in der Instanz. Das Service Broker-Routing verwendet den Service Broker-Bezeichner, um zu gewährleisten, dass alle Nachrichten für eine Konversation derselben Datenbank zugestellt werden. Deshalb sollte der Service Broker-Bezeichner für alle Instanzen im selben Netzwerk eindeutig sein. Andernfalls werden die Nachrichten möglicherweise fehlgeleitet.
Service Broker-Nachrichtenübermittlung
Um sicherzustellen, dass ein Service Broker-Bezeichner für alle Datenbanken in einem Netzwerk eindeutig ist, bietet SQL Server einen Mechanismus zur Deaktivierung der Service Broker-Nachrichtenübermittlung in einer Datenbank. Wenn die Nachrichtenübermittlung in einer Datenbank deaktiviert ist, verbleiben alle Nachrichten, die aus dieser Datenbank gesendet werden, in der Übertragungswarteschlange für die Datenbank. Zudem geht Service Broker davon aus, dass die Dienste in dieser Datenbank nicht zum Empfangen von Nachrichten zur Verfügung stehen. Diese Dienste werden nicht berücksichtigt, wenn das Service Broker-Routing einen Zieldienst innerhalb einer Instanz ermittelt.
Die Deaktivierung der Service Broker-Nachrichtenübermittlung ermöglicht Ihnen das sichere Anfügen einer Datenbanksicherungskopie zu Problembehandlungs- oder Datenwiederherstellungszwecken ohne das Risiko von fehlgeleiteten Nachrichten. Die Spalte is_broker_enabled von sys.databases zeigt den aktuellen Status der Service Broker-Nachrichtenübermittlung für jede Datenbank an.
SQL Server generiert einen neuen Service Broker-Bezeichner für jede neue Datenbank. Da es sich um einen neuen Bezeichner handelt, kann SQL Server die Service Broker-Nachrichtenübermittlung in der neuen Datenbank sicher aktivieren. Keine anderen Datenbanken im Netzwerk sollten denselben Service Broker-Bezeichner aufweisen.
Wenn Sie eine Datenbank anfügen oder wiederherstellen, gehen Sie sorgfältig vor, um sicherzustellen, dass nur für eine Datenbank mit einem bestimmten Service Broker-Bezeichner die Nachrichtenübermittlung aktiviert ist. Andernfalls werden Nachrichten möglicherweise fehlgeleitet, und die Verarbeitung für eine Konversation kann in der falschen Kopie der Datenbank auftreten.
Verwalten von Bezeichnern und Nachrichtenübermittlung
Der CREATE DATABASE-Befehl, der ALTER DATABASE-Befehl und der RESTORE DATABASE-Befehl enthalten Optionen zum Aktivieren der Service Broker-Nachrichtenübermittlung und zum Ändern des Service Broker-Bezeichners für eine Datenbank.
Wenn Sie eine Datenbank anfügen oder wiederherstellen, bleiben der Service Broker-Bezeichner und der Nachrichtenübermittlungsstatus standardmäßig unverändert. Im Allgemeinen ändern Sie den Service Broker-Bezeichner nicht, wenn Sie eine Sicherungskopie wiederherstellen, wenn Sie ein gespiegeltes Paar konfigurieren oder wenn Sie den Protokollversand für einen Standbyserver konfigurieren. Beim Erstellen einer Datenbankkopie ändern Sie den Instanzbezeichner.
Es gibt vier Optionen zum Verwalten von Bezeichnern und Nachrichtenübermittlung:
- ENABLE_BROKER. Mit dieser Option wird die Service Broker-Nachrichtenübermittlung aktiviert, und der bereits vorhandene Service Broker-Bezeichner für die Datenbank wird beibehalten.
Hinweis: |
---|
Aktivieren von SQL Server-Service Broker in jeder Datenbank erfordert eine Datenbanksperre. Um Service Broker in der msdb-Datenbank zu aktivieren, beenden Sie erst den SQL Server-Agent, damit Service Broker die notwendige Sperre erhalten kann. |
- DISABLE_BROKER. Mit dieser Option wird die Service Broker-Nachrichtenübermittlung deaktiviert, und der bereits vorhandene Service Broker-Bezeichner für die Datenbank wird beibehalten.
- NEW_BROKER. Mit dieser Option wird die Service Broker-Nachrichtenübermittlung aktiviert, und ein neuer Service Broker-Bezeichner für die Datenbank wird erstellt. Diese Option beendet alle vorhandenen Konversationen in der Datenbank mit einem Fehler, da diese Konversationen den neuen Instanzbezeichner nicht verwenden.
- ERROR_BROKER_CONVERSATIONS. Mit dieser Option wird die Service Broker-Nachrichtenübermittlung aktiviert, und der bereits vorhandene Service Broker-Bezeichner für die Datenbank wird beibehalten. Service Broker beendet alle Konversationen in der Datenbank mit einem Fehler.
Unabhängig von der angegebenen Option ermöglicht SQL Server jedoch nicht, dass für zwei Datenbanken mit demselben Service Broker-Bezeichner die Nachrichtenübermittlung in derselben SQL Server-Instanz aktiviert ist. Wenn Sie eine Datenbank mit demselben Service Broker-Bezeichner wie dem einer bereits vorhandenen Datenbank anfügen, deaktiviert SQL Server die Service Broker-Nachrichtenübermittlung in der angefügten Datenbank.
Weitere Informationen zu den Optionen zum Anfügen von Datenbanken finden Sie unter CREATE DATABASE (Transact-SQL) und ALTER DATABASE (Transact-SQL). Anweisungen zum Aktivieren der Service Broker-Nachrichtenübermittlung in einer Datenbank finden Sie unter Vorgehensweise: Aktivieren von Service Broker-Nachrichtenübermittlung in Datenbanken (Transact-SQL).
Siehe auch
Andere Ressourcen
ALTER DATABASE (Transact-SQL)
CREATE DATABASE (Transact-SQL)
RESTORE (Transact-SQL)
sys.databases (Transact-SQL)