USE [HCITools] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Check_SQL_Dumps]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[Check_SQL_Dumps] GO /****** Object: StoredProcedure [dbo].[Check_SQL_Dumps] Script Date: 12/14/2018 13:07:58 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[Check_SQL_Dumps] @in_debug int = null AS /*============================================================================= Explication du traitement realise par la SP ------------------------------------------- Cette SP vérifie le log SQL des 2 dernières heures et envoie une alerte par mail si des dumps SQL ont été générés. Contexte d'utilisation ---------------------- Cette SP est appelée par le job SQL DR92120 - Check Stack Dump Parametres ---------- @in_debug : Si 1 alors on fait un print des commandes Creation : 14.12.18 / SPE Modifications : 17.03.2022 - FLA : Change DBA mail =============================================================================*/ set nocount on; declare @result_sp int, @errno int, @errmsg varchar(255) /*------------------- Declaration des variables --------------------*/ DECLARE @dateFrom datetime, @dateTo datetime, @totDumps int, @msg varchar(8000) /*------------ Affectation des parametres aux variables ------------*/ SET @dateFrom = DATEADD(minute, -120, GETDATE()) SET @dateTo = GETDATE() SET @msg = '' /*-------------------------- Traitement ---------------------------*/ BEGIN TRY CREATE TABLE #t_totDumps(LogDate datetime, ProcessInfo varchar(20), Textlog varchar(20) ); INSERT INTO #t_totDumps(LogDate,ProcessInfo,Textlog) EXEC sys.xp_readerrorlog 0, 1, '* BEGIN STACK DUMP:', NULL, @dateFrom, @dateTo, N'desc' SELECT @totDumps = COUNT(*) FROM #t_totDumps DROP TABLE #t_totDumps; IF @totDumps <> 0 BEGIN SET @msg = 'WARNING: ' + convert(varchar,@totDumps) + ' SQL crash dumps found during the last 2 hours!'; EXEC hcitools.dbo.aps_Send_Mail_with_template @in_param_varchar_2 = 'DBA_operator;', @in_job_type = 3, /* 3 = warning */ @in_param_varchar_3 = @msg END /*---------------------- Traitement des erreurs ----------------------*/ END TRY BEGIN CATCH /* Traitement des erreurs (avec RaiseError) */ EXEC dbo.get_Error_Info @in_RaiseError = 1 END CATCH GO