Enable broker service on all databases
Rédigé par Sozezzo - - Aucun commentaireEnable 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