打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
转贴:使用SqlDependency时提示当前数据库未启用Service broker 百...
使用SqlDependency时提示当前数据库未启用Service broker

昨晚遇到的这个问题,也知道Notifications service依赖底层的Service broker的。本以为只需要执行以下脚本对数据库启用Service broker即可。

alter database DBNAME set enable_broker

但是,执行后,脚本一直处于执行状态,不以为然,正好在忙其它事情就没有查看运行结果,结果到今早一看,居然运行还没有结束。虽然是在一个生产数据库上执行的,数据库也只有30G的样子,但也不至于执行一个晚上也未结束,只好终止执行,使用

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

查看is_broker-enabled为0,依然未启用Service broker

后google下,在一个国外论坛里面找到了解决办法:

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

执行以上2条语句,未做任何等待,就提示命令执行完成。

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

查看is_broker-enabled为1

NEW_BROKER选项,SQL SERVER联机丛书上的解释:

每个数据库都包含一个 Service Broker 标识符。sys.databases 目录视图的 service_broker_guid 列显示该实例中每个数据库的 Service Broker 标识符。Service Broker 路由使用 Service Broker 标识符来保证一个会话的所有消息都传递到同一个数据库。因此,Service Broker 标识符在同一网络上的所有实例中应是唯一的。否则,消息可能被误传。

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

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

ROLLBACK IMMEDIATE将立即回滚未完成的事务。

来自: http://hi.baidu.com/supermfc/blog/item/7066f74435c1fb8eb3b7dcda.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用 SqlDependency 对象缓存数据以提高性能 - waylee - 博客园
SQLServer数据库设置项梳理
一步一步配置DataGuard Broker
WPF非轮询方式实时更新数据库变化SqlDependency
置疑数据库修复方法
服务器和应用系统迁移方案
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服