The SQL Server Service Broker for the current database is not enabled

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SweetyoYY/article/details/80043921

* 问题

       完整的问题是这样的:The SQL Server Service Broker for the current database is not enabled, and as a result query notifications are not supported


* 原因

       Notifications service依赖底层的Service broker的,每个数据库都包含一个 Service Broker 标识符。sys.databases 目录视图的 service_broker_guid 列显示该实例中每个数据库的 Service Broker 标识符。Service Broker 路由使用 Service Broker 标识符来保证一个会话的所有消息都传递到同一个数据库。因此,Service Broker 标识符在同一网络上的所有实例中应是唯一的。否则,消息可能被误传。不过为什么会出现标识符不唯一,现在不是很清楚,希望路过的明白人可以指点一下~


* 方案

       查看是否启用Service broker,如果为0,则为启用,

SELECT is_broker_enabled FROM sys.databases WHERE name = 'DBNAME'

       回滚未完成的事务,并启动Service broker。

ALTER DATABASE DatabaseName SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE Databasename SET ENABLE_BROKER;

       SQL Server 为每个新数据库生成新的 Service Broker 标识符。由于标识符是新的,因此 SQL Server 可以安全地激活新数据库中的 Service Broker 消息传递。网络上的其他数据库应该不会有与之相同的 Service Broker 标识符。

       NEW_BROKER。此选项用于激活 Service Broker 消息传递,同时为数据库创建新的 Service Broker 标识符。由于该数据库中所有的现有会话都未使用新的实例标识符,因此,此选项将结束这些会话并返回一个错误。


* 总结

       数据库的内容和遇到的问题很多,我们遇到的话,寻求解决的办法并进行学习,同时也要记录下来,不断的提升。

       感谢您的阅读。

猜你喜欢

转载自blog.csdn.net/SweetyoYY/article/details/80043921