USE [HCITools]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dba].[Backup_all_principal_permission]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dba].[Backup_all_principal_permission]
GO
USE [HCITools]
GO
/****** Object: StoredProcedure [dbo].[bkp_Dump] Script Date: 11/18/2016 11:13:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dba].[Backup_all_principal_permission]
@in_debug int = null
AS
/*=============================================================================
Explication du traitement realise par la SP
-------------------------------------------
Cette SP sert à créer les backups des sécurités pour toutes les bases.
Contexte d'utilisation
----------------------
Cette SP doit être appélée avant les mises à jour de nouvelle version.
Parametres
----------
@in_debug : Si 1 alors on fait un print des commandes de backup
Creation : 18.11.16 / RTC
=============================================================================*/
set nocount on;
declare @result_sp int,
@errno int,
@errmsg varchar(255)
/*------------------- Declaration des variables --------------------*/
declare @name varchar (255),
@cmd varchar (8000),
@xml XML,
@delimiter VARCHAR(1),
@param_group_counter_list NVARCHAR(3000),
@label datetime
select @param_group_counter_list = HCIP_value
from HCITools.dbo.HCI_PARAMS
where HCIP_key = 'BKP_NOT_DB'
set @delimiter = ','
set @xml = CAST((''+REPLACE(@param_group_counter_list, @delimiter, '')+'') 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
order by name
;
/*------------ Affectation des parametres aux variables ------------*/
select @errno = 0
;
SET @errmsg = ''
;
set @label = getdate()
;
/*-------------------------- Traitement ---------------------------*/
open c_databases
;
FETCH NEXT FROM c_databases
into @name
;
while @@fetch_status = 0
begin
/* Backup */
begin try
EXECUTE [HCITools].[dba].[Backup_principal_permission] @name ,@label ,@in_debug
end try
begin catch
select @errmsg = @errmsg + 'Backup permissions 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
;
/*------------------ Retour au programme appelant -----------------*/
return(@@error);