[SQL Server] Empêcher la modification des procédures stockées

IF EXISTS(

 SELECT *

 FROM sys.triggers

 WHERE name = N'trg_ControlerModifProcedures'

 AND parent_class_desc = N'DATABASE'

)

 DROP TRIGGER trg_ControlerModifProcedures ON DATABASE

GO

CREATE TRIGGER trg_ControlerModifProcedures ON DATABASE

 FOR DDL_PROCEDURE_EVENTS

AS

IF IS_MEMBER('db_owner') = 0

BEGIN

 PRINT 'Vous n''étes pas autorisé à modifier et créer les procédures'

ROLLBACK TRANSACTION

END

GO

-- Vérifions le comportement :

execute as user = 'user_1'

go

select SUSER_NAME() as NomSession, USER_NAME() as NomUtilisateur

go

create procedure dbo.usp_AfficherDate

 as

select getdate()

-- Après le test on reprend son identité par :

revert

select SUSER_NAME() as NomSession, USER_NAME() as NomUtilisateur