Files
sql-scripts/TPDT-268 - ACP in task sequence/dba_storedProcedures/dbo.get_Error_Info.sql
2024-03-07 16:52:14 +01:00

103 lines
3.2 KiB
Transact-SQL

USE [HCITools]
GO
/****** Object: StoredProcedure [dbo].[get_Error_Info] Script Date: 10/31/2016 15:06:06 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_Error_Info]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[get_Error_Info]
GO
USE [HCITools]
GO
/****** Object: StoredProcedure [dbo].[get_Error_Info] Script Date: 10/31/2016 15:06:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[get_Error_Info]
@in_debug tinyint = 0,
@in_Recipients varchar(8000) = '',
@in_LogToTable tinyint = 0,
@in_Context tinyint = 1, -- 1 = SP, 2 = Job
@in_RaiseError tinyint = 1
AS
/*=============================================================================
Explication du traitement realise par la SP
-------------------------------------------
La SP sert à gérer les erreurs remontées par SQL Server.
Parametres
----------
@in_debug : non utilisé
@in_Recipients : Contient la liste des mails pour l'envoi de mail lors d'une erreur
@in_LogToTable : si 1, enregistre l'erreur dans la table SQL_Errors
@in_Context : Si 1, le contexte est une SP, si 2, le contexte est un job (pour la gestion du mail)
@in_RaiseError : Si 1, raise l'error
Contexte d'utilisation
----------------------
Appelé depuis SP, Job, Trigger etc...
Creation : 04.04.16 / FLA
Modifications :
=============================================================================*/
/*------------------- Declaration des variables --------------------*/
declare @ErrorMessage nvarchar(4000) = ERROR_MESSAGE(),
@ErrorNumber int = ERROR_NUMBER(),
@ErrorSeverity int = ERROR_SEVERITY(),
@ErrorState int = ERROR_STATE(),
@ErrorLine int = ERROR_LINE(),
@ErrorProc nvarchar(128) = COALESCE(ERROR_PROCEDURE(), 'Not within procedure'),
@Error varchar(max)
BEGIN TRY
/*------------ Affectation des parametres aux variables ------------*/
select @Error = 'Error Number: ' + CAST(@ErrorNumber AS varchar(10)) + CHAR(13) +
'Error Message: ' + @ErrorMessage + CHAR(13) +
'Error Severity: ' + CAST(@ErrorSeverity AS varchar(10)) + CHAR(13) +
'Error State: ' + CAST(@ErrorState AS varchar(10)) + CHAR(13) +
'Error Line: ' + CAST(@ErrorLine AS varchar(10)) + CHAR(13) +
'Error Proc: ' + @ErrorProc + CHAR(13)
/*-------------------------- Traitement ---------------------------*/
IF @in_Recipients <> ''
BEGIN
IF @in_Context = 1
exec dbo.aps_Send_Mail_with_template @in_job_type = 0,@in_param_message = @Error, @in_param_varchar_2 = @in_Recipients
ELSE
BEGIN
exec dbo.aps_Send_Mail_with_template @in_param_varchar_2 = @in_Recipients
END
END
IF @in_LogToTable = 1
INSERT INTO SQL_Errors VALUES (@@SERVERNAME,APP_NAME(),CURRENT_USER,@ErrorProc,GETDATE(),@in_Context,@Error)
END TRY
BEGIN CATCH
RAISERROR ('Erreur dans la SP [dbo].[get_Error_Info]',16,1)
RETURN
END CATCH
IF @in_RaiseError = 1
RAISERROR (@ErrorMessage,
@ErrorSeverity,
@ErrorState
);
GO