103 lines
3.2 KiB
Transact-SQL
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
|
|
|
|
|