202 lines
5.8 KiB
Transact-SQL
202 lines
5.8 KiB
Transact-SQL
USE [HCITools]
|
|
GO
|
|
|
|
/****** Object: StoredProcedure [perf].[Get_Performance_Status] Script Date: 02/01/2016 16:15:59 ******/
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[perf].[Get_Performance_Status]') AND type in (N'P', N'PC'))
|
|
DROP PROCEDURE [perf].[Get_Performance_Status]
|
|
GO
|
|
|
|
USE [HCITools]
|
|
GO
|
|
|
|
/****** Object: StoredProcedure [perf].[Get_Performance_Status] Script Date: 02/01/2016 16:15:59 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE PROCEDURE [perf].[Get_Performance_Status]
|
|
@in_debug tinyint = 0,
|
|
@in_Recipients varchar(8000) = '',
|
|
@in_SendInConsole tinyint = 1,
|
|
@in_CheckList varchar(14) = '11111111111111'
|
|
AS
|
|
/*=============================================================================
|
|
|
|
Explication du traitement realise par la SP
|
|
-------------------------------------------
|
|
Cette SP sert à appeler les SP d'analyse de performance pour la capture des traces et collecte les résultats pour leur traitement
|
|
|
|
Contexte d'utilisation
|
|
----------------------
|
|
Cette SP est appelée manuellement en cas de besoin
|
|
|
|
Parametres
|
|
----------
|
|
@in_debug : si 1, affichage de la liste des SP contenues dans la SP principale
|
|
@in_Recipients : Si vide, pas d'envoi de mail sinon contient le code ou les mails destinataires du mail
|
|
@in_SendInConsole : si 1, affichage dans la console
|
|
@in_CheckList : Contient la liste des checks à effectuer. 0 pour désactivé, 1 pour premier niveau, 2 pour 2ème niveau etc..
|
|
La position défini la SP à appeler. Ex : 11111111111111 appelle toutes les SP en niveau 1
|
|
|
|
Creation : 10.11.15 / FLA
|
|
|
|
Modifications : 17.08.2023 / SPE : OCTPDBA-726: Replace mail profile name APSSQL_MAIL_PROFILE into AzureManagedInstance_dbmail_profile to be SQL managed instances compatible
|
|
|
|
=============================================================================*/
|
|
|
|
set nocount on;
|
|
|
|
/*------------------- Declaration des variables --------------------*/
|
|
declare @html nvarchar(max),
|
|
@TableHTML nvarchar(max),
|
|
@i tinyint,
|
|
@cmd varchar(500),
|
|
@Title varchar(50),
|
|
@Details tinyint,
|
|
@in_SendInMail tinyint
|
|
|
|
|
|
declare @SPList table (
|
|
ID tinyint,
|
|
SPName varchar(50),
|
|
SPTitle varchar(50),
|
|
Details tinyint NULL)
|
|
|
|
CREATE TABLE #HTMLResult (
|
|
ID tinyint,
|
|
Result nvarchar(max)
|
|
)
|
|
|
|
|
|
/*------------ Affectation des parametres aux variables ------------*/
|
|
SET @html = '<table border="0">'
|
|
|
|
/* Déclaration des SP disponibles pour l'analyse des performances */
|
|
insert into @SPList VALUES (1,'Check_RAM','RAM', NULL)
|
|
insert into @SPList VALUES (2,'Check_CPU','CPU', NULL)
|
|
insert into @SPList VALUES (3,'Check_Disk','DISK', NULL)
|
|
insert into @SPList VALUES (4,'Check_Locks','LOCKS', NULL)
|
|
insert into @SPList VALUES (5,'Check_Replication','REPLICATION', NULL)
|
|
insert into @SPList VALUES (6,'Check_Jobs','JOBS', NULL)
|
|
insert into @SPList VALUES (7,'Check_Process','PROCESS', NULL)
|
|
insert into @SPList VALUES (8,'Check_If_Error','ERRORS', NULL)
|
|
insert into @SPList VALUES (9,'Check_Statistics','STATISTICS', NULL)
|
|
insert into @SPList VALUES (10,'Check_Index','INDEX', NULL)
|
|
insert into @SPList VALUES (11,'Check_Trace','TRACE', NULL)
|
|
insert into @SPList VALUES (12,'Check_Query','QUERY', NULL)
|
|
insert into @SPList VALUES (13,'Check_TempDB','TEMPDB', NULL)
|
|
insert into @SPList VALUES (14,'Check_Waits','WAITS', NULL)
|
|
|
|
SET @i = 1
|
|
|
|
/*-------------------------- Traitement ---------------------------*/
|
|
|
|
|
|
BEGIN TRY
|
|
|
|
/* Si @in_Recipients alors on n'envoie pas de mail */
|
|
IF @in_Recipients = ''
|
|
SET @in_SendInMail = 0
|
|
ELSE
|
|
SET @in_SendInMail = 1
|
|
|
|
/* Si mode debug, alors on affiche la liste des SP appelées */
|
|
IF @in_debug = 1
|
|
SELECT CAST(ID as varchar(2)) + ' - ' + SPName FROM @SPList ORDER BY ID
|
|
ELSE
|
|
BEGIN
|
|
|
|
/* On parcour l'ensemble des SP à traiter */
|
|
WHILE @i <> LEN(@in_CheckList)+1
|
|
BEGIN
|
|
|
|
/* Mise à jour du niveau de détails voulu par SP */
|
|
UPDATE @SPList SET Details = CAST(SUBSTRING(@in_CheckList,@i,1) as int) WHERE ID = @i
|
|
|
|
/* Récupération du titre à afficher dans la SP et du niveau de détails voulu */
|
|
SELECT @Title = SPTitle, @Details = Details FROM @SPList WHERE ID = @i
|
|
|
|
if @Details > 0
|
|
BEGIN
|
|
|
|
/* Si mode console, on affiche le titre */
|
|
IF @in_SendInConsole = 1
|
|
SELECT @Title
|
|
|
|
/* Si détail > 0 execution de chaque SP */
|
|
SELECT @cmd='EXEC [perf].'+ SPName + ' @in_SendInMail ='+CAST(@in_SendInMail as CHAR) +', @in_SendInConsole = '+CAST(@in_SendInConsole as CHAR)+', @in_Details = '+CAST(Details as CHAR)+', @in_ID = '+CAST(ID as varchar(3))+';' FROM @SPList WHERE ID = @i
|
|
EXEC(@cmd)
|
|
|
|
/* Préparation du titre en mode HTML en cas d'envoi par mail */
|
|
SET @html = @html + '<tr><td><br><h4>'+@Title+'</h4></td></tr>'
|
|
|
|
SELECT @html = @html + Result from #HTMLResult WHERE ID = @i
|
|
END
|
|
|
|
SET @i = @i+1
|
|
END
|
|
|
|
/* Envoi de mail */
|
|
if @in_SendInMail = 1
|
|
BEGIN
|
|
|
|
/* Get default mailbox profile name */
|
|
DECLARE @defaultprofilname varchar(100)
|
|
SELECT DISTINCT @defaultprofilname = p.name FROM msdb.dbo.sysmail_profile p JOIN msdb.dbo.sysmail_principalprofile pp ON pp.profile_id = p.profile_id AND pp.is_default = 1
|
|
|
|
EXEC msdb.dbo.sp_send_dbmail @recipients=@in_Recipients,
|
|
@subject = 'Compte rendu de performance',
|
|
@body = @html,
|
|
@body_format = 'HTML',
|
|
@profile_name = @defaultprofilname
|
|
END
|
|
|
|
DROP TABLE #HTMLResult
|
|
END
|
|
|
|
END TRY
|
|
BEGIN CATCH
|
|
DROP TABLE #HTMLResult
|
|
|
|
/* Traitement des erreurs (avec RaiseError) */
|
|
EXEC dbo.get_Error_Info
|
|
|
|
END CATCH
|
|
;
|
|
|
|
/*------------------ Retour au programme appelant -----------------*/
|
|
|
|
return(@@error);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GO
|
|
|