115 lines
3.2 KiB
Transact-SQL
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 |