Deinstallieren von Service Broker-Anwendungen

Sie müssen eine Service Broker-Anwendung nur dann deinstallieren, wenn die Datenbank weiterhin in derselben Instanz gehostet wird, jedoch nicht mehr den Dienst bereitstellt, der von der Anwendung implementiert wird. 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. Damit eine Anwendung, die eine gespeicherte Prozedur verwendet, eine Konversation initiiert, müssen Sie diese gespeicherte Prozedur möglicherweise löschen. Im Falle eines externen Programms dürfen Sie das Programm den Benutzern eventuell nicht zur Verfügung stellen oder müssen 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. Wenn alle Nachrichten in der Warteschlange verarbeitet werden, können die Zielanwendungen die Konversation kontrolliert beenden und müssen nicht auf eine Antwort von dem Dienst warten, den Sie gerade beenden.

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. Welche Methode auch immer Sie wählen, das Beenden der Konversationen ermöglicht es, dass die initiierenden Anwendungen kontrolliert beendet werden können und nicht auf eine Antwort von dem Dienst gewartet werden muss, den Sie beenden.

Im Falle von Datenbanken, die initiierende Dienste hosten, müssen Sie jede Route löschen, die die Netzwerkadresse für den Dienst enthält, den Sie deinstallieren. Löschen Sie die Routen für diesen Dienst in der msdb-Datenbank von Instanzen, die Nachrichten für diesen Dienst weiterleiten. Falls die Instanz, die den Dienst hostet, in msdb eine Route für den Dienst enthält, löschen Sie diese Route.

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.