2009-07-07 15 views
98

Tengo un servidor Microsoft SQL 2005 y tratado para permitir Broker para mi base de datos con los de T-SQL:Habilitar SQL Server Broker tomar demasiado tiempo

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

El Alter Database toma mucho tiempo para procesar. Ahora es más de media hora y todavía está funcionando. ¿No estoy seguro de si está esperando algo más o tengo que limpiar algo primero, como eliminar todos los mensajes, el contrato, la cola y los servicios en el intermediario de servicios?

Respuesta

199

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; 
+6

¿cuál es el efecto de "con reversión inmediata"? –

+10

@ A.Dara No puede modificar una base de datos mientras haya transacciones pendientes. Rollback inmediato terminará todos estos. – libjup

+0

¿Puedes responder [esto] (http://stackoverflow.com/questions/38456433/cannot-find-the-object-querynotificationerrorsqueue-because-it-does-not-exist) publicar en sqlDependency? – stom

13

Con más adelante código que permite habilitar la cola corredor de servicio inmediatamente

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

En realidad estoy prefiriendo utilizar NEW_BROKER, que está funcionando muy bien en todos los casos:

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

Habilitación de SQL Server Service Broker requiere un bloqueo de base de datos. Detener el Agente SQL Server y luego ejecutar el siguiente:

USE master ; 
GO 

ALTER DATABASE [MyDatabase] SET ENABLE_BROKER ; 
GO 

Cambio [MyDatabase] con el nombre de su base de datos en cuestión y luego iniciar el Agente SQL Server.

Si quieres ver todas las bases de datos que tienen habilitada o deshabilitada Service Broker, a continuación, consulta sys.databases, por ejemplo:

SELECT 
    name, database_id, is_broker_enabled 
FROM sys.databases 
Cuestiones relacionadas