启用S​​QL Server Broker需要很长时间

Dav*_*.ca 129 sql-server-2005 service-broker

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

 SELECT name, is_broker_enabled FROM sys.databases 
 -- checking its status 0 in my case
 ALTER DATABASE myDatabase SET ENABLE_BROKER
Run Code Online (Sandbox Code Playgroud)

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

Rem*_*anu 257

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;
Run Code Online (Sandbox Code Playgroud)

  • @ A.Dara只要有待处理的事务,您就无法更改数据库.立即回滚将终止所有这些. (13认同)
  • "立即回滚"有什么影响? (7认同)

小智 24

使用以下代码,您可以立即启用服务代理队列

ALTER DATABASE Database_Name SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
Run Code Online (Sandbox Code Playgroud)


小智 11

USE master;
GO
ALTER DATABASE Database_Name
    SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
GO
USE Database_Name;
GO
Run Code Online (Sandbox Code Playgroud)


小智 5

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

USE master ;
GO

ALTER DATABASE [MyDatabase] SET ENABLE_BROKER ;
GO
Run Code Online (Sandbox Code Playgroud)

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

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

SELECT
    name, database_id, is_broker_enabled
FROM sys.databases
Run Code Online (Sandbox Code Playgroud)