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);