web-dev-qa-db-fra.com

Aucun courtier de service actif sur la base de données

J'essaie de configurer une notification de requête toutefois lorsque j'essaie de créer une file d'attente et un service, je reçois l'erreur "Il n'y a pas de courtier de service actif dans la base de données. Passer à un contexte de base de données contenant un courtier de service. ' Quand je gère la requête

select is_broker_enabled from sys.databases where name='db01' 

Il renvoie 1 ce qui signifie qu'un courtier a été activé sur la base de données

Voici les commandes SQL que je suis en cours d'exécution pour créer ma file d'attente et ma service ...

CREATE QUEUE DeviceChangeMessages
CREATE SERVICE DeviceChangeNotifications ON QUEUE DeviceChangeMessages ([http://schemas.Microsoft.com/SQL/Notifications/PostQueryNotification]);
7
Johnathon64

Eh bien, je pense que c'est assez simple.

  1. Vous venez de recevoir le message que le courtier de service n'est pas activé. Mais vous interrogez les bases de données système, pas votre base de données actuelle. Comme une idée, pourrait-il être que vous exécutez le script pour configurer la notification dans votre base de données master pendant que vous oubliez de modifier le contexte de la base de données à votre db01 Où le courtier de service est activé?
  2. Un autre cas de bord peut être le msdb, revérifier si cela est activé.
  3. Sinon, essayez d'activer/désactiver le courtier de service dans votre db01 et réessayer.

Vous pouvez utiliser ceci:

ALTER DATABASE dbo1 SET DISABLE_BROKER
ALTER DATABASE dbo1 SET ENABLE_BROKER
5
Ionic