sync
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user