数据库上没有活动的服务代理

Joh*_*n64 7 sql-server service-broker queue

我正在尝试设置查询通知,但是当我尝试创建队列和服务时,我收到错误消息“数据库中没有活动的 Service Broker。更改为包含 Service Broker 的数据库上下文。当我运行查询时

select is_broker_enabled from sys.databases where name='db01' 
Run Code Online (Sandbox Code Playgroud)

它返回 1 表示已在数据库上启用代理

这是我正在运行以创建队列和服务的 sql 命令...

CREATE QUEUE DeviceChangeMessages
CREATE SERVICE DeviceChangeNotifications ON QUEUE DeviceChangeMessages ([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]);
Run Code Online (Sandbox Code Playgroud)

Ion*_*nic 5

嗯,我认为这很简单。

  1. 您只会收到 Service Broker 未启用的消息。但是您查询的是系统数据库,而不是您当前的数据库。就像一个想法,可能是,您运行脚本以在您的master数据库中而忘记将数据库上下文更改db01为启用 Service Broker 的位置?
  2. 另一个边缘情况可以是 msdb,重新检查它是否已启用。
  3. 否则尝试启用/禁用您的服务代理 db01试。

你可以使用这个:

ALTER DATABASE dbo1 SET DISABLE_BROKER
ALTER DATABASE dbo1 SET ENABLE_BROKER
Run Code Online (Sandbox Code Playgroud)