Enable broker service on all databases

Rédigé par Sozezzo - - Aucun commentaire

Enable broker service on all databases but it check if Service Broker is enabled.



-- ***************************************** --
--       SQL Script to ENABLE_BROKER
-- ***************************************** --
--
PRINT @@servername;
PRINT Getdate();
BEGIN TRY DROP TABLE #dbs; END TRY BEGIN CATCH END CATCH;
 
--#region Select databases to Enable Broker Service

SELECT [name] INTO #dbs
FROM sys.databases
WHERE
    database_id > 4
    AND is_broker_enabled = 0  -- check if Service Broker is enabled.
    AND name NOT IN ('ReportServer','ReportServerTempDB')

--#endregion Select databases to Enable Broker Service

USE [MASTER];
SET NOCOUNT ON;
DECLARE @name nvarchar(200);
DECLARE @sql NVARCHAR(MAX);
DECLARE @ToKill AS NVARCHAR(MAX);

WHILE (EXISTS(SELECT * FROM #dbs))
BEGIN

    SELECT TOP 1 @name = name
    FROM #dbs;
    DELETE FROM #dbs
    WHERE
        @name = name;

    DECLARE @msg nvarchar(200) = '-- SET ENABLE_BROKER Database : ' + @name;
    RAISERROR (@msg, 10, 1) WITH NOWAIT;

    SET @ToKill = '';
    SELECT @toKill = @ToKill + 'begin try kill ' + cast(spid AS NVARCHAR(10)) + '; print ''Ok   to kill : ' + cast(spid AS NVARCHAR(10)) + '''; end try begin catch print ''Fail to kill : ' + cast(spid AS NVARCHAR(10)) + '''; end catch;'
    FROM master..sysprocesses
    WHERE dbid = DB_ID(@name);

    RAISERROR (@tokill, 10, 1) WITH NOWAIT;
    EXEC (@tokill);

    SET @sql = 'ALTER DATABASE [' + @name + '] SET ENABLE_BROKER WITH NO_WAIT;'

    RAISERROR (@sql, 10, 1) WITH NOWAIT;
    EXEC (@sql);

END

Les commentaires sont fermés.