Files
sql-scripts/TPDT-268 - ACP in task sequence/dba_storedProcedures/Restore_principal_permission.sql
2024-03-07 16:52:14 +01:00

115 lines
3.2 KiB
Transact-SQL

USE [HCITools]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dba].[Restore_principal_permission]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dba].[Restore_principal_permission]
GO
USE [HCITools]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dba].[Restore_principal_permission]
@in_param_database_name varchar (255) = null,
@in_param_label datetime = null,
@in_debug int = null
AS
/*=============================================================================
Explication du traitement realise par la SP
-------------------------------------------
Cette Sp sert a rétablir à partir d'une sauvegarde les droits et sécurités pour une base donnée.
Contexte d'utilisation
----------------------
Cette Sp est utilisée lors de la mise à jour des environnements afin de ,
restaurer les droits à la fin de la mise à jour.
Parametres
----------
@in_database_name = nom de la base
@@in_label = Label de l'extraction
Creation : 17.11.16 / rtc
Dossier : #35262# + Security - Backup and restore SQL objects security
Modifications :
DD.MM.YY / xxx :
=============================================================================*/
SET NOCOUNT ON;
declare @result_sp int,
@errno int,
@errmsg varchar(255);
/*------------------------ Test des parametres input ------------------------*/
if @in_param_database_name is null
or (@in_param_label is null)
begin
select @errno = 70003,
@errmsg = '(APS) Invalid input parameters !'
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 @cmd varchar (max);
declare @label datetime,
@database_name varchar (255),
@database_id int;
/*------------ Affectation des parametres aux variables ------------*/
select @label = CONVERT(datetime, @in_param_label,121);
select @database_name = @in_param_database_name
select top 1 @database_id = database_id
from sys.databases
where name = @database_name
select @cmd = ''
/*-------------------------- Traitement ---------------------------*/
begin try
select @cmd = @cmd + PP_apply_permission_command + CHAR(13)
from HCITools.dba.Principal_Permission
where len(PP_apply_permission_command) > 3
and PP_timestamp = CONVERT(datetime, @label,121)
and PP_database_name = @database_name
select @cmd= 'USE ' + @database_name +';' + CHAR(13) + @cmd
if (@in_Debug = 1)
print @cmd;
else
exec (@cmd)
end try
begin catch
select @errno = 70000,
@errmsg = 'Error occured when restoring principals !! ' + ERROR_MESSAGE()
;
goto error_99
end catch
/*------------------ Retour au programme appelant -----------------*/
return(ISNULL(@@error,0));
/*---------------------- Traitement des erreurs ----------------------*/
error_99:
raiserror(@errmsg, 14, 1)
return(@errno)
;
go