161 lines
4.5 KiB
Transact-SQL
161 lines
4.5 KiB
Transact-SQL
USE [HCITools]
|
|
GO
|
|
|
|
/****** Object: StoredProcedure [dbo].[bkp_Dump] Script Date: 10/15/2015 10:58:14 ******/
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[bkp_Dump]') AND type in (N'P', N'PC'))
|
|
DROP PROCEDURE [dbo].[bkp_Dump]
|
|
GO
|
|
|
|
USE [HCITools]
|
|
GO
|
|
|
|
/****** Object: StoredProcedure [dbo].[bkp_Dump] Script Date: 10/15/2015 10:58:14 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
|
|
CREATE PROCEDURE [dbo].[bkp_Dump]
|
|
@in_debug int = null,
|
|
@in_Recovery_Model varchar(25) = null
|
|
AS
|
|
/*=============================================================================
|
|
|
|
Explication du traitement realise par la SP
|
|
-------------------------------------------
|
|
Cette SP sert à créer les backups des bases de données. Suivant la version de SQL Server, la compression se fait ou pas avec la possibilité de choisir les bases par mode de recovery
|
|
|
|
|
|
Contexte d'utilisation
|
|
----------------------
|
|
Cette SP est appelée par le D91010 - Backup of several databases
|
|
D91040 - Backup of simple databases
|
|
D91050 - Backup of full databases
|
|
|
|
|
|
Parametres
|
|
----------
|
|
@in_debug : Si 1 alors on fait un print des commandes de backup
|
|
@@in_Recovery_Model : Choix du mode de recovery des bases. si null : All recovery model sinon recovery model défini
|
|
|
|
Creation : 15.10.15 / FLA
|
|
|
|
Modifications : 21.07.16 / FLA : Séléction uniquement des bases de données online (state = 0)
|
|
28.11.16 / FLA : Correct bug in checking version
|
|
24.05.17 / FLA : Ajout du choix du mode de recovery des bases à backuper
|
|
28.08.18 / FLA : Suppression gestion version car bug detecté et plus nécessaire
|
|
17.03.22 / FLA : Change DBA mail
|
|
=============================================================================*/
|
|
|
|
set nocount on;
|
|
|
|
declare @result_sp int,
|
|
@errno int,
|
|
@errmsg varchar(255)
|
|
|
|
/*------------------- Declaration des variables --------------------*/
|
|
|
|
declare @name varchar (255),
|
|
@cmd varchar (8000),
|
|
@messageError varchar (8000),
|
|
@xml XML,
|
|
@delimiter VARCHAR(1),
|
|
@param_group_counter_list NVARCHAR(3000)
|
|
|
|
|
|
IF @in_Recovery_Model is null
|
|
SET @in_Recovery_Model = 'FULL,SIMPLE,BULK-LOGGED'
|
|
|
|
SELECT @param_group_counter_list = HCIP_value FROM dbo.HCI_PARAMS WHERE HCIP_key = 'BKP_NOT_DB'
|
|
SET @delimiter = ','
|
|
SET @xml = CAST(('<X>'+REPLACE(@param_group_counter_list, @delimiter, '</X><X>')+'</X>'+'<Y>'+REPLACE(@in_Recovery_Model, @delimiter, '</Y><Y>')+'</Y>') AS XML)
|
|
|
|
declare c_databases cursor local forward_only static for
|
|
SELECT name
|
|
FROM sys.databases
|
|
WHERE LOWER(name) not in (SELECT C.value('.', 'varchar(3000)') AS value FROM @xml.nodes('X') AS X(C))
|
|
AND state = 0
|
|
AND recovery_model_desc IN (SELECT C.value('.', 'varchar(3000)') AS value FROM @xml.nodes('Y') AS X(C))
|
|
ORDER BY name
|
|
|
|
/*------------ Affectation des parametres aux variables ------------*/
|
|
|
|
select @errno = 0
|
|
;
|
|
SET @messageError = ''
|
|
;
|
|
SET @errmsg = ''
|
|
;
|
|
|
|
|
|
/*-------------------------- Traitement ---------------------------*/
|
|
|
|
open c_databases
|
|
;
|
|
FETCH NEXT FROM c_databases
|
|
into @name
|
|
;
|
|
|
|
while @@fetch_status = 0
|
|
begin
|
|
/* DUMP */
|
|
select @cmd = 'BACKUP DATABASE [' + @name + '] TO [' + @name + '_Dump] WITH INIT, NOUNLOAD, NAME = N''' + @name + ' backup'', SKIP , STATS = 10, FORMAT, COMPRESSION, CHECKSUM; RESTORE VERIFYONLY FROM [' + @name + '_Dump];'
|
|
;
|
|
|
|
BEGIN TRY
|
|
|
|
IF (@in_debug = 1)
|
|
print @cmd;
|
|
ELSE
|
|
exec (@cmd)
|
|
;
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
select @messageError = @messageError + 'Backup failed : ' + @name + ' ' + ERROR_MESSAGE() + CHAR(13)
|
|
;
|
|
|
|
SET @errno = @errno + 1
|
|
;
|
|
END CATCH
|
|
;
|
|
FETCH NEXT FROM c_databases
|
|
into @name
|
|
;
|
|
end
|
|
;
|
|
close c_databases
|
|
;
|
|
deallocate c_databases
|
|
;
|
|
|
|
if @errno > 0
|
|
BEGIN
|
|
exec aps_Send_Mail_with_template
|
|
@in_param_varchar_2 = 'DBA_operator;',
|
|
@in_job_type = 3, /* 3 = warning */
|
|
@in_param_varchar_3 = @messageError
|
|
;
|
|
|
|
select @errno = 70003,
|
|
@errmsg = '(BKP) Erreur lors du job de backup'
|
|
goto error_99
|
|
END
|
|
;
|
|
|
|
/*------------------ Retour au programme appelant -----------------*/
|
|
|
|
return(@@error);
|
|
|
|
/*---------------------- Traitement des erreurs ----------------------*/
|
|
error_99:
|
|
raiserror (@errmsg, 16, 1);
|
|
return(@errno);
|
|
|
|
GO
|
|
|
|
|