Gestion des identités Service Broker
Chaque base de données est dotée d'un identificateur unique qui sert à acheminer les messages Service Broker vers les bases de données. Cette rubrique décrit les identités Service Broker, la fiabilité de la technologie Service Broker par rapport aux erreurs d'acheminement de messages et les options disponibles qui permettent de gérer ces identités.
Identificateur Service Broker
Chaque base de données contient un identificateur Service Broker. La colonne service_broker_guid de l'affichage catalogue sys.databases regroupe les identificateurs Service Broker de chaque base de données dans l'instance. Le routage Service Broker utilise cet identificateur pour assurer la remise de tous les messages d'une conversation à une même base de données. L'identificateur Service Broker doit donc demeurer unique parmi toutes les instances d'un même réseau. Sinon, l'acheminement des messages pourrait être incorrect.
Remise de messages Service Broker
SQL Server permet de désactiver la remise de messages Service Broker dans une base de données, afin de préserver l'unicité de chaque identificateur Service Broker entre les bases de données d'un même réseau. Lorsque la remise de messages est désactivée dans une base de données, tous les messages envoyés depuis cette base de données sont conservés dans la file d'attente de transmission de la base de données. De son côté, Service Broker considère les services de cette base de données comme indisponibles pour la réception de messages. Ces services sont ignorés lorsque le routage Service Broker repère un service de destination dans une instance.
La désactivation de la remise de messages Service Broker vous permet d'attacher en toute sécurité la sauvegarde d'une base de données dans le cadre d'un dépannage ou d'une récupération de données, sans courir le risque d'un mauvais acheminement des messages. La colonne is_broker_enabled de l'affichage catalogue sys.databases renseigne sur l'état de la remise de messages Service Broker en cours pour chaque base de données.
SQL Server crée automatiquement un identificateur Service Broker pour chaque nouvelle base de données. Grâce à cet identificateur, SQL Server peut sans problème activer la remise de messages Service Broker dans la nouvelle base de données. Aucune autre base de données sur le réseau ne doit être dotée du même identificateur Service Broker.
Lorsque vous attachez ou restaurez une base de données, prenez soin de vérifier que la remise de messages n'est active que sur une seule base de données pourvue d'un identificateur Service Broker donné, sinon, des erreurs dans l'acheminement des messages risquent de survenir et le traitement d'une conversation peut ne pas s'exécuter dans le bon exemplaire de la base de données.
Gestion des identificateurs et de la remise de messages
Les commandes CREATE DATABASE, ALTER DATABASE et RESTORE DATABASE fournissent des options qui permettent d'activer la remise de messages Service Broker et de modifier l'identificateur Service Broker d'une base de données.
Lorsque vous attachez ou restaurez une base de données, l'état de l'identificateur Service Broker et l'état de la remise des messages demeurent inchangés par défaut. En règle générale, ne modifiez pas l'identificateur Service Broker lorsque vous restaurez une sauvegarde en vue d'une récupération, lorsque vous configurez une paire en miroir ou si vous paramétrez une copie des journaux de transactions pour un serveur de secours. En revanche, vous modifiez cet identificateur si vous effectuez une copie de la base de données.
Il existe quatre options permettant de gérer les identificateurs et la remise de messages :
- ENABLE_BROKER. Cette option active la remise de messages Service Broker en conservant l'identificateur existant pour la base de données.
Remarque : |
---|
L'activation de SQL Server Service Broker dans une base de données nécessite un verrou de base de données. Pour activer Service Broker dans la base de données msdb, arrêtez d'abord l'Agent SQL Server pour que Service Broker puisse obtenir le verrou nécessaire. |
- DISABLE_BROKER. Cette option désactive la remise de messages Service Broker en conservant l'identificateur existant pour la base de données.
- NEW_BROKER. Cette option active la remise de messages Service Broker et crée un nouvel identificateur pour la base de données. Elle met fin à toutes les conversations existant dans la base de données par le biais d'une erreur, puisque ces conversations n'utilisent pas le nouvel identificateur de l'instance.
- ERROR_BROKER_CONVERSATIONS. Cette option active la remise de messages Service Broker en conservant l'identificateur existant pour la base de données. Service Broker met fin à toutes les conversations d'une base de données par le biais d'une erreur.
Toutefois, indépendamment de l'option spécifiée, SQL Server empêche deux bases de données dotées du même identificateur Service Broker d'utiliser la fonction de remise de messages dans la même instance SQL Server. Si vous attachez une base de données qui possède le même identificateur Service Broker que la base de données existante, SQL Server désactive automatiquement la remise de messages Service Broker dans la base de données que vous reliez.
Pour plus d'informations sur les options permettant d'attacher des bases de données, consultez CREATE DATABASE (Transact-SQL) et ALTER DATABASE (Transact-SQL). Pour connaître les instructions d'activation d'une remise de messages Service Broker dans une base de données, consultez Procédure : activer la remise de messages Service Broker dans les bases de données (Transact-SQL).
Voir aussi
Autres ressources
ALTER DATABASE (Transact-SQL)
CREATE DATABASE (Transact-SQL)
RESTORE (Transact-SQL)
sys.databases (Transact-SQL)