zoukankan      html  css  js  c++  java
  • 未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker。]

    http://blog.csdn.net/mss359681091/article/details/51726823

    昨晚遇到的这个问题,也知道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将立即回滚未完成的事务。

  • 相关阅读:
    Maven中使用描述文件切换环境配置
    整合MyBatis到Spring中实现Dao层自动装配
    使用MyBatis搭建项目时报 java.io.IOException: Could not find resource
    数据库CPU占用高排查
    JS 根据时区获取时间
    国外服务器 winserver2012 安装IIS后,安装urlrewrite模块总是自动停止应用程序池
    sql中char(9) char(10) char(13)
    通过 Microsoft.Ace.OLEDB 接口导入 EXCEL 到SQLSERVER
    SDL 当前连接查询脚本
    C# System.Drawing.Graphics 画图后,如何保存一个低质量的图片,一个占用空间较小的图片
  • 原文地址:https://www.cnblogs.com/liuqiyun/p/7692673.html
Copyright © 2011-2022 走看看