Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Enable SQL Server Broker taking too long

I have a Microsoft SQL server 2005 and I tried to enable Broker for my database with those T-SQL:

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

The Alter Database takes long time to process. It is now over half hour and it is still running. Not sure if it is waiting for something else or I have to clean up anything first, such as delete all the messages, contract, queue and services under service broker?

like image 881
David.Chu.ca Avatar asked Jul 07 '09 19:07

David.Chu.ca


People also ask

What is set Enable_broker?

SET ENABLE_BROKER command needs an exclusive lock on the database. This statement completes immediately unless there are open connections to the database that have locked resources in the database. ENABLE_BROKER will wait until the other sessions release their locks.


4 Answers

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;
like image 183
Remus Rusanu Avatar answered Oct 02 '22 17:10

Remus Rusanu


USE master;
GO
ALTER DATABASE Database_Name
    SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
GO
USE Database_Name;
GO
like image 29
Irfanullah Avatar answered Oct 02 '22 17:10

Irfanullah


Enabling SQL Server Service Broker requires a database lock. Stop the SQL Server Agent and then execute the following:

USE master ;
GO

ALTER DATABASE [MyDatabase] SET ENABLE_BROKER ;
GO

Change [MyDatabase] with the name of your database in question and then start SQL Server Agent.

If you want to see all the databases that have Service Broker enabled or disabled, then query sys.databases, for instance:

SELECT
    name, database_id, is_broker_enabled
FROM sys.databases
like image 22
AKDiscer Avatar answered Oct 02 '22 17:10

AKDiscer


Actually I am preferring to use NEW_BROKER ,it is working fine on all cases:

ALTER DATABASE [dbname] SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
like image 30
Mohamad Mahmoud Avatar answered Oct 02 '22 16:10

Mohamad Mahmoud