152

我有一个 Microsoft SQL Server 2005,我尝试使用这些 T-SQL 为我的数据库启用代理:

 SELECT name, is_broker_enabled FROM sys.databases 
 -- checking its status 0 in my case
 ALTER DATABASE myDatabase SET ENABLE_BROKER

Alter Database需要很长时间来处理。现在已经半个多小时了,它还在运行。不确定它是在等待其他东西还是我必须先清理任何东西,例如删除服务代理下的所有消息、合同、队列和服务?

4

4 回答 4

308

http://rusanu.com/2006/01/30/how-long-should-i-expect-alter-databse-set-enable_broker-to-run/

alter database [<dbname>] set enable_broker with rollback immediate;
于 2009-07-07T19:21:08.443 回答
17
USE master;
GO
ALTER DATABASE Database_Name
    SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
GO
USE Database_Name;
GO
于 2015-12-15T11:57:43.843 回答
4

启用 SQL Server Service Broker 需要数据库锁。停止 SQL Server 代理,然后执行以下命令:

USE master ;
GO

ALTER DATABASE [MyDatabase] SET ENABLE_BROKER ;
GO

将 [MyDatabase] 更改为相关数据库的名称,然后启动 SQL Server 代理。

如果您想查看所有启用或禁用 Service Broker 的数据库,请查询 sys.databases,例如:

SELECT
    name, database_id, is_broker_enabled
FROM sys.databases
于 2017-10-26T17:20:07.350 回答
2

实际上我更喜欢使用NEW_BROKER它,它在所有情况下都可以正常工作:

ALTER DATABASE [dbname] SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
于 2017-05-22T12:55:21.807 回答