Freigeben über


Deinstallieren von Dienstbrokeranwendungen

Gilt für:SQL ServerAzure SQL Managed Instance

Sie müssen eine Dienstbrokeranwendung nur deinstallieren, wenn die Datenbank weiterhin in derselben Instanz gehostet wird, aber nicht mehr den Dienst bereitstellt, den die Anwendung implementiert. Wenn Sie eine Datenbank löschen, werden die Service Broker-Objekte innerhalb dieser Datenbank gelöscht. Wenn Sie eine Datenbank von einer Instanz in eine andere verschieben, werden auch die in dieser Datenbank gehosteten Dienste verschoben.

Deinstallieren eines initiierenden Diensts

Um einen initiierenden Dienst zu deinstallieren, verhindern Sie zunächst, dass die Anwendung ausgehende Nachrichten erstellt. Auf welche Weise am besten verhindert wird, dass die Anwendung neue Nachrichten sendet, richtet sich nach dem Typ der Anwendung. Für eine Anwendung, die eine gespeicherte Prozedur verwendet, um eine Unterhaltung zu initiieren, müssen Sie diese gespeicherte Prozedur möglicherweise ablegen. Für ein externes Programm müssen Sie das Programm möglicherweise für Benutzer nicht verfügbar machen oder das Programm deinstallieren.

Nachdem Sie verhindert haben, dass der Dienst neue Nachrichten erstellt, müssen Sie sicherstellen, dass der Dienst alle in der Warteschlange verbliebenen Nachrichten verarbeitet. Sie können eine einfache Prozedur schreiben, die jede Nachricht in der Warteschlange empfängt, die Konversation mit einem Fehler beendet und den Status der Konversation entfernt. Die Verarbeitung aller Nachrichten in der Warteschlange ermöglicht es den Zielanwendungen, die Unterhaltung ordnungsgemäß zu beenden, anstatt auf eine Antwort des Diensts zu warten, den Sie herunterfahren.

Löschen Sie schließlich die Dienstdefinition, um sicherzustellen, dass Service Broker keine Nachrichten für den Dienst mehr annimmt. Löschen Sie sämtliche Routen für den Dienst. Löschen Sie die Verträge, Nachrichtentypen und Warteschlangen für den Dienst, es sei denn, diese Objekte werden von einem anderen Dienst in der Instanz verwendet. Löschen Sie ggf. die gespeicherte Aktivierungsprozedur für den Dienst.

Deinstallieren eines Zieldiensts

Um einen Zieldienst zu deinstallieren, müssen Sie zunächst sicherstellen, dass der Dienst alle in der Warteschlange verbliebenen Nachrichten verarbeitet. Die Anwendung kann die Nachrichten verarbeiten, eine einfache Prozedur schreiben, die die Konversationen mit einem anwendungsspezifischen Fehler beendet, oder den Dienst einfach löschen, um die Konversationen mit einem Service Broker-Fehler zu beenden. Je nachdem, welche Methode Sie auswählen, ermöglicht das Beenden der Unterhaltungen, dass die initiierenden Anwendungen ordnungsgemäß enden, anstatt auf eine Antwort des Diensts zu warten, den Sie herunterfahren.

Legen Sie in Datenbanken, die initiierende Dienste hosten, jede Route ab, die die Netzwerkadresse für den Dienst enthält, den Sie deinstallieren. Legen Sie die Routen für diesen Dienst in der msdb Datenbank von Instanzen ab, die Nachrichten für diesen Dienst weiterleiten. Wenn die Instanz, in der der Dienst gehostet wird, eine Route für msdb den Dienst enthält, legen Sie diese Route ab.

Löschen Sie schließlich die Dienstdefinition, um sicherzustellen, dass Service Broker keine Nachrichten für den Dienst mehr annimmt. Löschen Sie die Verträge, Nachrichtentypen und Warteschlangen für den Dienst, es sei denn, diese Objekte werden von einem anderen Dienst in der Instanz verwendet. Löschen Sie ggf. die gespeicherte Aktivierungsprozedur für den Dienst.