Включение SQL Server Broker занимает слишком много времени

у меня есть 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 отнимает много времени. Прошло уже более получаса, а он все еще работает. Не уверен, что он ждет чего-то еще или мне нужно сначала что-то очистить, например удалить все сообщения, контракт, очередь и службы в service broker?

6 ответов


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;

С помощью кода ниже вы можете немедленно включить очередь Service broker

ALTER DATABASE Database_Name SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;

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

На самом деле я предпочитаю использовать NEW_BROKER, он отлично работает во всех случаях:

ALTER DATABASE [dbname] SET NEW_BROKER WITH ROLLBACK IMMEDIATE;

включение SQL Server Service Broker требует блокировки базы данных. Остановите агент SQL Server и выполните следующие действия:

USE master ;
GO

ALTER DATABASE [MyDatabase] SET ENABLE_BROKER ;
GO

измените [MyDatabase] с именем соответствующей базы данных, а затем запустите агент SQL Server.

Если требуется просмотреть все базы данных, в которых включен или отключен компонент Service Broker, запросите sys.базы данных, например:

SELECT
    name, database_id, is_broker_enabled
FROM sys.databases

в моем случае я использовал базу данных sql в своем веб-проекте, как в режиме отладки. Поэтому, когда я закрыл все соединения, он выполнялся нормально.