126 lines
3.0 KiB
Transact-SQL
126 lines
3.0 KiB
Transact-SQL
USE [HCITools]
|
|
GO
|
|
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[bkp_Purge_Log]') AND type in (N'P', N'PC'))
|
|
DROP PROCEDURE [dbo].[bkp_Purge_Log]
|
|
GO
|
|
|
|
USE [HCITools]
|
|
GO
|
|
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
|
|
|
|
CREATE PROCEDURE [dbo].[bkp_Purge_Log]
|
|
@in_debug int = null,
|
|
@in_NbDays smallint
|
|
|
|
AS
|
|
/*=============================================================================
|
|
|
|
Explication du traitement realise par la SP
|
|
-------------------------------------------
|
|
Cette SP sert à supprimer les anciens fichiers de log de plus de X jours
|
|
|
|
Contexte d'utilisation
|
|
----------------------
|
|
Cette SP est appelée par le job DR91020 - Log-backup
|
|
|
|
Parametres
|
|
----------
|
|
@in_debug : non utilisé
|
|
@in_NbDays : nombre de jours de rétention des logs
|
|
|
|
Creation : 28.10.16 / FLA
|
|
|
|
Modifications : 17.03.2022 - FLA : Change DBA mail
|
|
|
|
=============================================================================*/
|
|
|
|
set nocount on;
|
|
|
|
/*------------------- Declaration des variables --------------------*/
|
|
declare @DB_name varchar (255),
|
|
@messageError varchar(8000),
|
|
@dt datetime,
|
|
@result_xp int,
|
|
@BackupLogFolder varchar (4000),
|
|
@path varchar (4000)
|
|
|
|
declare @t_result TABLE
|
|
(result_text VARCHAR(200))
|
|
|
|
/*------------ Affectation des parametres aux variables ------------*/
|
|
SELECT @BackupLogFolder=HCIP_value FROM dbo.HCI_PARAMS WHERE HCIP_key = 'BKP_DIR_L'
|
|
select @dt = DateAdd(dd, -@in_NbDays, GetDate())
|
|
SET @messageError = ''
|
|
|
|
/*-------------------------- Traitement ---------------------------*/
|
|
BEGIN TRY
|
|
|
|
declare c_databases cursor local forward_only static for
|
|
SELECT name
|
|
FROM sys.databases
|
|
WHERE LOWER(name) not in ('model')
|
|
AND recovery_model_desc = 'FULL'
|
|
ORDER BY name
|
|
|
|
open c_databases
|
|
|
|
FETCH NEXT FROM c_databases
|
|
into @DB_name
|
|
|
|
while @@fetch_status = 0
|
|
begin
|
|
|
|
select @path = @BackupLogFolder+ @DB_name;
|
|
|
|
INSERT INTO @t_result(result_text)
|
|
EXECUTE @result_xp = master.dbo.xp_delete_file 0,@path,N'trn',@dt,1
|
|
|
|
if (@result_xp <> 0)
|
|
BEGIN
|
|
SELECT @messageError = @messageError + @DB_name + ': '+ result_text + CHAR(13)
|
|
FROM @t_result
|
|
WHERE result_text IS NOT NULL
|
|
END
|
|
delete from @t_result;
|
|
|
|
FETCH NEXT FROM c_databases
|
|
into @DB_name
|
|
end
|
|
|
|
close c_databases
|
|
deallocate c_databases
|
|
|
|
/* S'il y a une erreur, on envoie un mail aux DBA */
|
|
IF @messageError <> ''
|
|
BEGIN
|
|
exec aps_Send_Mail_with_template
|
|
@in_param_varchar_2 = 'DBA_operator;',
|
|
@in_job_type = 3, /* 3 = warning */
|
|
@in_param_varchar_3 = @messageError
|
|
|
|
RAISERROR ('Erreur dans la SP [dbo].[bkp_Purge_Log]',16,1)
|
|
END
|
|
|
|
/*---------------------- Traitement des erreurs ----------------------*/
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
/* Traitement des erreurs (avec RaiseError) */
|
|
EXEC dbo.get_Error_Info @in_RaiseError = 1
|
|
|
|
END CATCH
|
|
|
|
|
|
GO
|
|
|
|
|