139 lines
3.4 KiB
Transact-SQL
139 lines
3.4 KiB
Transact-SQL
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(('<X>'+REPLACE(@param_group_counter_list, @delimiter, '</X><X>')+'</X>') 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
|