USE [HCITools] GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dba].[Restore_all_principal_permission]') AND type in (N'P', N'PC')) DROP PROCEDURE [dba].[Restore_all_principal_permission] GO USE [HCITools] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dba].[restore_all_principal_permission] @in_param_label datetime, @in_debug int = null AS /*============================================================================= Explication du traitement realise par la SP ------------------------------------------- Cette SP sert à restaurrer les sécurités sauvegardé pour toutes les bases. Contexte d'utilisation ---------------------- Cette SP doit être appélée après les mises à jour de nouvelle version. Parametres ---------- @in_debug : Si 1 alors on fait un print des commandes de restore Creation : 18.11.16 / RTC =============================================================================*/ set nocount on; declare @result_sp int, @errno int, @errmsg varchar(255) /*------------------------ Test des parametres input ------------------------*/ if (@in_param_label is null) begin select @errno = 70003, @errmsg = '(APS) Invalid input parameter label !' goto error_99 end if not exists (select 1 from HCITools.dba.Principal_Permission where PP_timestamp = CONVERT(datetime, @in_param_label,121)) begin select @errno = 70003, @errmsg = '(DBA) No label found to restore principal permission ! ' + @in_param_label goto error_99 end /*------------------- 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 = '' ; select @label = CONVERT(datetime, @in_param_label,121); ; /*-------------------------- Traitement ---------------------------*/ open c_databases ; FETCH NEXT FROM c_databases into @name ; while @@fetch_status = 0 begin /* Backup */ begin try print '---------------------------------------' print '--Start processing database : ' + @name execute [HCITools].[dba].[restore_principal_permission] @name ,@label ,@in_debug end try begin catch select @errno = 70003, @errmsg = @errmsg + 'restore all permissions failed : ' + @name + ' ' + ERROR_MESSAGE() + CHAR(13) ; goto error_99 end catch ; FETCH NEXT FROM c_databases into @name ; end ; close c_databases ; deallocate c_databases ; /*------------------ Retour au programme appelant -----------------*/ return(@@error); /*---------------------- Traitement des erreurs ----------------------*/ error_99: raiserror(@errmsg, 14, 1) return(@errno) ; go