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