2009-07-07 6 views
98

我有一個Microsoft SQL Server 2005中,我試圖讓經紀人爲我與T-SQL數據庫:啓用的SQL Server代理服用時間過長

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

Alter Database需要很長的時間來處理。現在已經過了半個小時了,它仍在運行。不知道它是否在等待別的東西,或者我必須先清理任何東西,比如刪除服務代理下的所有消息,合同,隊列和服務?

回答

13

下面的代碼,你可以啓用該服務代理隊列立即

ALTER DATABASE Database_Name SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE; 
8
USE master; 
GO 
ALTER DATABASE Database_Name 
    SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE; 
GO 
USE Database_Name; 
GO 
1

其實我更喜歡用NEW_BROKER,它是在所有情況下都工作正常:

ALTER DATABASE [dbname] SET NEW_BROKER WITH ROLLBACK IMMEDIATE; 
1

啓用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