Skip to content

The Service Broker is enabled on DBname #4

@LadyBird0

Description

@LadyBird0

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions