Désinstallation des applications Service Broker

Vous désinstallez une application Service Broker uniquement lorsque la base de données, toujours hébergée dans la même instance, n'assure plus le service que l'application met en œuvre. La suppression d'une base de données entraîne la disparition des objets Service Broker dans cette base de données. Déplacer une base de données d'une instance vers une autre entraîne également la migration des services hébergés dans cette base de données.

Désinstallation d'un service initiateur

Pour désinstaller un service à l'origine d'une conversation, empêchez tout d'abord l'application de créer des messages sortants. Pour cela, la meilleure façon de procéder dépend du type de l'application. Si l'application utilise une procédure stockée pour engager une conversation, procédez à la suppression de cette procédure. S'il s'agit d'un programme externe, vous avez le choix entre rendre le programme indisponible aux utilisateurs ou le désinstaller.

Après avoir suspendu la création de nouveaux messages par le service, assurez-vous que ce service traite chaque message demeuré dans la file d'attente. Vous pouvez écrire une procédure simple qui reçoit chacun de ces messages, met un terme à la conversation par le biais d'un message d'erreur et supprime l'état pour la conversation. Le fait de traiter tous les messages dans la file d'attente permet aux applications cibles d'achever la conversation naturellement plutôt que d'attendre une réponse du service que vous arrêtez.

Supprimez enfin la définition du service pour être sûr que Service Broker n'accepte plus aucun message à son attention. Supprimez également tous les itinéraires pour ce service, mais aussi les contrats, les types de messages et les files d'attente qui lui sont associés, à moins que ces objets ne soient utilisés dans l'instance par un autre service. Au besoin, supprimez la procédure stockée d'activation pour le service.

Désinstallation d'un service cible

Pour désinstaller un service cible, assurez-vous en premier lieu que ce service a traité chaque message demeuré dans la file d'attente. Vous pouvez au choix laisser l'application gérer ces messages, écrire une procédure simple qui achève la conversation au moyen d'une erreur spécifique à l'application concernée ou simplement supprimer le service pour mettre un terme aux conversations par le biais d'une erreur Service Broker. La méthode que vous choisissez importe peu, le fait de mettre fin aux conversations permet simplement aux applications initiatrices de se terminer naturellement plutôt que d'attendre une réponse du service que vous arrêtez.

Dans les bases de données qui hébergent des services initiateurs, supprimez chaque itinéraire contenant l'adresse réseau du service que vous désinstallez. Supprimez également les itinéraires pour ce service dans la base de données d'instances msdb qui transfère les messages destinés à ce service. Si l'instance qui héberge le service contient un itinéraire dans msdb pour ce service, supprimez cet itinéraire.

Supprimez enfin la définition du service pour être sûr que Service Broker n'accepte plus aucun message à son attention, mais aussi les contrats, les types de messages et les files d'attente qui lui sont associés, à moins que ces objets ne soient utilisés par un autre service de l'instance. Le cas échéant, supprimez la procédure stockée d'activation pour le service.