150 lines
3.9 KiB
Transact-SQL
150 lines
3.9 KiB
Transact-SQL
USE [HCITools]
|
|
GO
|
|
|
|
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[bkp_Log]') AND type in (N'P', N'PC'))
|
|
DROP PROCEDURE [dbo].[bkp_Log]
|
|
GO
|
|
|
|
USE [HCITools]
|
|
GO
|
|
|
|
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
|
|
|
|
CREATE PROCEDURE [dbo].[bkp_Log]
|
|
@in_debug int = null
|
|
AS
|
|
/*=============================================================================
|
|
|
|
Explication du traitement realise par la SP
|
|
-------------------------------------------
|
|
Cette SP sert backuper les logs de transaction des bases de données en mode FULL
|
|
|
|
Contexte d'utilisation
|
|
----------------------
|
|
Cette SP est appelée par le job DR91020 - Log-backup
|
|
|
|
Parametres
|
|
----------
|
|
@in_debug : Si 1 alors on fait un print des commandes de backup
|
|
|
|
Creation : 28.10.16 / FLA
|
|
|
|
Modifications : 17.03.2022 - FLA : Change DBA mail
|
|
|
|
=============================================================================*/
|
|
|
|
set nocount on;
|
|
|
|
/*------------------- Declaration des variables --------------------*/
|
|
declare @DB_name varchar (255),
|
|
@path varchar (4000),
|
|
@backupDate datetime,
|
|
@fullpath varchar (2000),
|
|
@messageError varchar (8000),
|
|
@error int,
|
|
@BackupLogFolder varchar (4000)
|
|
|
|
|
|
/*------------ Affectation des parametres aux variables ------------*/
|
|
select @backupDate = getdate ();
|
|
select @error = 0
|
|
select @messageError = ''
|
|
|
|
/*-------------------------- Traitement ---------------------------*/
|
|
BEGIN TRY
|
|
SELECT @BackupLogFolder=HCIP_value FROM dbo.HCI_PARAMS WHERE HCIP_key = 'BKP_DIR_L'
|
|
|
|
/* On ne backup le transaction log que des bases de données en mode FULL (base model exclus) */
|
|
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'
|
|
AND state = 0
|
|
ORDER BY name
|
|
|
|
open c_databases
|
|
|
|
FETCH NEXT FROM c_databases
|
|
into @DB_name
|
|
|
|
while @@fetch_status = 0
|
|
begin
|
|
|
|
select @path = @BackupLogFolder + @DB_name;
|
|
|
|
/* BUILD THE EXPECTED FORMAT: [DBName_backup_201108041510.trn] */
|
|
declare @filename varchar (2000);
|
|
select @filename = @DB_name
|
|
+ '_backup_'
|
|
+ convert(varchar, datepart (YYYY, @backupDate)) + '_'
|
|
+ right('0'+convert(varchar, datepart (MM, @backupDate)),2) + '_'
|
|
+ right('0'+convert(varchar, datepart (DD, @backupDate)),2) + '_'
|
|
+ right('0'+convert(varchar, datepart (HH, @backupDate)),2)
|
|
+ right('0'+convert(varchar, datepart (MI, @backupDate)),2)
|
|
+ right('0'+convert(varchar, datepart (SS, @backupDate)),2) + '_'
|
|
+ right('00'+convert(varchar, datepart (MS, @backupDate)),3)
|
|
+ '.trn'
|
|
|
|
select @fullpath = @path+'\'+@filename;
|
|
|
|
BEGIN TRY
|
|
/* BACKUP THE LOG */
|
|
|
|
IF (@in_debug = 1)
|
|
print 'BACKUP LOG '+@DB_name+ ' TO DISK = '+@fullpath
|
|
else
|
|
BACKUP LOG @DB_name TO DISK = @fullpath
|
|
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
select @messageError = @messageError + 'Backup Log failed : ' + @DB_name + ' ' + ERROR_MESSAGE() + CHAR(13)
|
|
SET @error = @error + 1
|
|
|
|
END CATCH
|
|
|
|
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_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
|
|
|
|
|