133 lines
3.5 KiB
Transact-SQL
133 lines
3.5 KiB
Transact-SQL
USE [HCITools]
|
|
GO
|
|
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[mon_Check_Broker_queues]') AND type in (N'P', N'PC'))
|
|
DROP PROCEDURE [dbo].[mon_Check_Broker_queues]
|
|
GO
|
|
|
|
USE [HCITools]
|
|
GO
|
|
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
|
|
|
|
|
|
CREATE PROCEDURE [dbo].[mon_Check_Broker_queues]
|
|
@in_debug tinyint = 0
|
|
AS
|
|
/*=============================================================================
|
|
|
|
Explication du traitement realise par la SP
|
|
-------------------------------------------
|
|
La SP va vérifier si l'ensemble des queues du broker ne sont pas désactivées pour chaque base de données
|
|
|
|
Contexte d'utilisation
|
|
----------------------
|
|
Appelé depuis le job DR92110 - Check Broker Queues
|
|
|
|
Parametres
|
|
----------
|
|
@in_debug : non utilisé
|
|
|
|
Creation : 31.10.16 / FLA
|
|
|
|
Modifications : 17.03.2022 - FLA : Change DBA mail
|
|
|
|
=============================================================================*/
|
|
|
|
set nocount on;
|
|
|
|
|
|
/*------------------- Declaration des variables --------------------*/
|
|
|
|
declare @DbName sysname,
|
|
@QueueName sysname,
|
|
@ErrorMsg varchar(2000),
|
|
@cmd varchar(5000)
|
|
|
|
declare c_database_broker cursor local forward_only static for
|
|
select name from sys.databases
|
|
WHERE database_id > 4
|
|
AND is_broker_enabled = 1
|
|
|
|
create table #ListBrokerQueues (
|
|
DbName sysname,
|
|
QueueName sysname)
|
|
|
|
/*------------ Affectation des parametres aux variables ------------*/
|
|
SET @ErrorMsg = ''
|
|
|
|
/*-------------------------- Traitement ---------------------------*/
|
|
BEGIN TRY
|
|
open c_database_broker
|
|
|
|
FETCH NEXT FROM c_database_broker
|
|
into @DbName
|
|
|
|
WHILE @@fetch_status = 0
|
|
BEGIN
|
|
|
|
SET @cmd = 'INSERT INTO #ListBrokerQueues
|
|
SELECT '''+@DbName+''',name FROM '+ @DbName +'.sys.service_queues
|
|
WHERE name NOT IN (''QueryNotificationErrorsQueue'',''EventNotificationErrorsQueue'',''ServiceBrokerQueue'')
|
|
and (is_activation_enabled = 0 OR is_receive_enabled = 0 OR is_enqueue_enabled = 0)'
|
|
|
|
exec (@cmd)
|
|
|
|
FETCH NEXT FROM c_database_broker
|
|
into @DbName
|
|
END
|
|
|
|
CLOSE c_database_broker
|
|
DEALLOCATE c_database_broker
|
|
|
|
|
|
declare c_queues cursor local forward_only static for
|
|
select DbName, QueueName from #ListBrokerQueues
|
|
|
|
open c_queues
|
|
|
|
FETCH NEXT FROM c_queues
|
|
into @DbName, @QueueName
|
|
|
|
WHILE @@fetch_status = 0
|
|
BEGIN
|
|
|
|
SET @ErrorMsg = @ErrorMsg + 'Error in queue ' + @QueueName + ' of Database ' + @DbName + CHAR(13) + CHAR(10)
|
|
|
|
FETCH NEXT FROM c_queues
|
|
into @DbName, @QueueName
|
|
END
|
|
|
|
CLOSE c_queues
|
|
DEALLOCATE c_queues
|
|
|
|
DROP TABLE #ListBrokerQueues
|
|
|
|
/* S'il y a une erreur, on envoie un mail aux DBA */
|
|
IF @ErrorMsg <> ''
|
|
BEGIN
|
|
exec aps_Send_Mail_with_template
|
|
@in_param_varchar_2 = 'DBA_operator;',
|
|
@in_job_type = 3, /* 3 = warning */
|
|
@in_param_varchar_3 = @ErrorMsg
|
|
|
|
RAISERROR ('Erreur dans la SP [dbo].[mon_Check_Broker_queues]',16,1)
|
|
END
|
|
|
|
/*---------------------- Traitement des erreurs ----------------------*/
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
/* Traitement des erreurs (avec RaiseError) */
|
|
EXEC dbo.get_Error_Info @in_RaiseError = 1
|
|
|
|
END CATCH
|
|
|