-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
USE MASTER
DECLARE @dbname SYSNAME
SET @dbname = 'DBNameSTR'
DECLARE @errorMessage NVARCHAR(1000)
IF EXISTS(SELECT 1 FROM SYS.DATABASES WHERE DATABASE_ID = DB_ID(@dbname) AND IS_BROKER_ENABLED = 0)
BEGIN
IF EXISTS (SELECT 1 FROM SYS.SYSPROCESSES WHERE DBID = DB_ID(@dbname) AND SPID <> @@spid AND STATUS <> 'background')
BEGIN
DECLARE @spid INT
DECLARE KILLPROCESSES_CURSOR CURSOR FOR
SELECT SPID FROM SYS.SYSPROCESSES WHERE DBID = DB_ID(@DBNAME) AND SPID <> @@SPID AND STATUS <> 'background'
OPEN KILLPROCESSES_CURSOR
FETCH NEXT FROM KILLPROCESSES_CURSOR INTO @SPID
WHILE(@@FETCH_STATUS = 0)
BEGIN
EXEC ('KILL '+@SPID)
FETCH NEXT FROM KILLPROCESSES_CURSOR INTO @SPID
END
CLOSE KILLPROCESSES_CURSOR
DEALLOCATE KILLPROCESSES_CURSOR
END
/*IF EXISTS (SELECT 1 FROM SYS.SYSPROCESSES WHERE DBID = DB_ID(@DBNAME))
BEGIN
SET @ERRORMESSAGE = 'The '+@DBNAME+' database is currently in use. Service Broker can''t be enabled at the moment. Please contact the administrator or try later.'
RAISERROR (@ERRORMESSAGE,18,9);
END
ELSE*/
BEGIN
IF NOT EXISTS(SELECT 1 FROM SYS.DATABASES WHERE IS_BROKER_ENABLED = 1)
EXEC('ALTER DATABASE '+ @DBNAME +' SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE')
ELSE
EXEC('ALTER DATABASE '+ @DBNAME +' SET NEW_BROKER WITH ROLLBACK IMMEDIATE')
SELECT 'The Service Broker is enabled on '+ @DBNAME
END
END
ELSE
BEGIN
IF EXISTS(SELECT 1 FROM SYS.DATABASES WHERE DATABASE_ID = DB_ID(@dbname) AND IS_BROKER_ENABLED = 1)
SELECT 'The Service Broker for database '+ @dbname +' is already enabled.'
ELSE
BEGIN
SET @errorMessage = 'The database '+ @dbname +' does not exists.'
RAISERROR (@errorMessage,18,9);
END
END
Metadata
Metadata
Assignees
Labels
No labels