120 lines
3.2 KiB
Transact-SQL
120 lines
3.2 KiB
Transact-SQL
USE [HCITools]
|
|
GO
|
|
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Purge_Replication_Backup]') AND type in (N'P', N'PC'))
|
|
DROP PROCEDURE [dbo].[Purge_Replication_Backup]
|
|
GO
|
|
|
|
USE [HCITools]
|
|
GO
|
|
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
CREATE PROCEDURE [dbo].[Purge_Replication_Backup]
|
|
@in_debug int = null
|
|
AS
|
|
/*=============================================================================
|
|
|
|
Explication du traitement realise par la SP
|
|
-------------------------------------------
|
|
Cette SP sert à conserver uniquement le dernier backup de replication et supprimer les autres
|
|
|
|
Contexte d'utilisation
|
|
----------------------
|
|
Cette SP est appelée par le job D93120 - Purge Replication Backup
|
|
|
|
Parametres
|
|
----------
|
|
@in_debug : affichage des fichiers à supprimer
|
|
|
|
Creation : 19.04.17 / FLA
|
|
|
|
Modifications : 21.09.20 / RTC TFS 61470 Adapt sp after shared file config changes
|
|
19.02.21 / SPE #TFS63889# - Change job D93120 - Purge Replication Backup according to new settings
|
|
|
|
=============================================================================*/
|
|
|
|
SET NOCOUNT ON;
|
|
|
|
/*------------------- Declaration des variables --------------------*/
|
|
DECLARE @FileName varchar(255),
|
|
@Path varchar(255),
|
|
@dbVersion varchar(20),
|
|
@FileToDelete varchar(350)
|
|
|
|
/*------------ Affectation des parametres aux variables ------------*/
|
|
|
|
SET @dbVersion = ActivePos_write.upd.DatabaseVersion()
|
|
SET @FileName = 'ActivePos_read.' + @dbVersion + '.bak'
|
|
|
|
/*-------------------------- Traitement ---------------------------*/
|
|
BEGIN TRY
|
|
|
|
/* Parcours de l'ensemble des dossiers d'ini */
|
|
DECLARE c_Folders CURSOR LOCAL FORWARD_ONLY STATIC FOR
|
|
SELECT CONVERT(VARCHAR(400), SettingValue) + '\' as [path]
|
|
FROM ActiveSystemServer.cfg.Settings
|
|
WHERE SettingId like 'Values.Modules.Replication.DbInitializationBackupPath%'
|
|
AND len(SettingValue) > 1
|
|
UNION ALL
|
|
SELECT CONVERT(VARCHAR(400), SettingValue) + '\' as [path]
|
|
FROM ActivePos_server.dbo.Settings
|
|
WHERE SettingId like 'Values.Pharmacy.DbInitializationBackupPath%'
|
|
AND len(SettingValue) > 1
|
|
|
|
OPEN c_Folders;
|
|
FETCH NEXT FROM c_Folders
|
|
INTO @Path
|
|
WHILE @@fetch_status = 0
|
|
BEGIN
|
|
|
|
/* Parcours de l'ensemble des fichiers de backup sauf le dernier en date */
|
|
DECLARE c_FileNames CURSOR LOCAL FORWARD_ONLY STATIC FOR
|
|
SELECT Filename
|
|
FROM [dbo].[aps_Directory_Get_Files](@Path, '*.bak')
|
|
WHERE Filename <> @FileName
|
|
ORDER BY Filename
|
|
|
|
OPEN c_FileNames;
|
|
|
|
FETCH NEXT FROM c_FileNames
|
|
INTO @FileToDelete
|
|
|
|
WHILE @@fetch_status = 0
|
|
BEGIN
|
|
SET @FileToDelete = @Path + @FileToDelete
|
|
|
|
IF @in_debug = 1
|
|
PRINT @FileToDelete
|
|
ELSE
|
|
EXEC dbo.aps_File_Delete @path = @FileToDelete
|
|
|
|
FETCH NEXT FROM c_FileNames
|
|
INTO @FileToDelete
|
|
END
|
|
|
|
CLOSE c_FileNames
|
|
DEALLOCATE c_FileNames
|
|
|
|
FETCH NEXT FROM c_Folders
|
|
INTO @Path
|
|
END
|
|
|
|
CLOSE c_Folders
|
|
DEALLOCATE c_Folders
|
|
|
|
/*---------------------- Traitement des erreurs ----------------------*/
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
/* Traitement des erreurs (avec RaiseError) */
|
|
EXEC dbo.get_Error_Info @in_RaiseError = 1
|
|
|
|
END CATCH
|
|
GO
|