澳门威尼斯人注册网址【官网首页】
做最好的网站

澳门威尼斯人登陆未启用当前数据库的

来源:http://www.ogcoffee123.com 作者:威尼斯人官网 人气:195 发布时间:2019-11-30
摘要:把一个数据恢复至另一个服务器上,出现了一个异常: 转自: The SQL Server Service Broker for the current database is not enabled, and as a result query notifications are not supported.  Please enable the Service Bro

把一个数据恢复至另一个服务器上,出现了一个异常:

转自:

The SQL Server Service Broker for the current database is not enabled, and as a result query notifications are not supported.  Please enable the Service Broker for this database if you wish to use notifications.

截图如下:
澳门威尼斯人登陆 1

 

解决方法:
澳门威尼斯人登陆 2

参考上面的步骤,可以设置为True。
但是,你也许没有那么顺利,当你点击"OK"铵钮时,会现另外一个异常:
澳门威尼斯人登陆 3

 

那怎样解决呢?没有关系,可以在SQL查询分析器中执行SQL语句:
澳门威尼斯人登陆 4

 

澳门威尼斯人登陆 5澳门威尼斯人登陆 6

DECLARE @DBName SYSNAME

SET @DBName = 'Tutorial'  --'Your DB Name'

DECLARE @spid INT
SELECT @spid = MIN(spid) FROM [MASTER].[dbo].[sysprocesses] WHERE dbid = DB_ID(@DBName)
WHILE @spid IS NOT NULL
BEGIN
    EXECUTE ('KILL ' + @spid)
    SELECT @spid = MIN(spid)  FROM [MASTER].[dbo].[sysprocesses] WHERE dbid = DB_ID(@DBName) AND spid > @spid
END

EXECUTE('ALTER DATABASE '+ @DBName +' SET ENABLE_BROKER')   --DISABLE_BROKER

Source Code

 

执行发现:查看is_broker-enabled为1,表示启用Service broker。

数据库分离后,附加回到数据库,然后在程序中打开调用数据库的页面,出现如下问题:“未启用当前数据库的
SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker
”。

解决方案:
在使用的数据库下,依次执行如下语句:
第一步:
SELECT is_broker_enabled FROM sys.databases WHERE name = '数据库名称'

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将立即回滚未完成的事务。

执行发现:查看is_broker-enabled为0,依然未启用Service broker

第二步:
ALTER DATABASE 数据库名称 SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE 数据库名称 SET ENABLE_BROKER;

第三步:
SELECT is_broker_enabled FROM sys.databases WHERE name = '数据库名称'

本文由澳门威尼斯人注册网址发布于威尼斯人官网,转载请注明出处:澳门威尼斯人登陆未启用当前数据库的

关键词:

最火资讯