Sql server 2005 : historiser les procédures stockées d'une base de données

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 361 fois - Téléchargée 18 fois

Contenu du snippet

Ce code permet d'intercepter tout ALTER PROCEDURE et donc toute modification de procédure stockée effectué sur une base de données.
Il crée une table d'historique et y range la version précedente de la procédure.

La table d'historique créée est dbo.SpHisto.

Source / Exemple :


CREATE TRIGGER [TrackSpChange] ON DATABASE
    FOR ALTER_PROCEDURE
AS
    BEGIN
	
		SET NOCOUNT ON

        DECLARE @sql nvarchar(max)
        DECLARE @event xml
        DECLARE @id int
	
        SET @event = eventdata()
        SET @id = OBJECT_ID(@event.value('/EVENT_INSTANCE[1]/ObjectName[1]',
                                         'sysname'), 'P')	
        SET @sql = @event.value('/EVENT_INSTANCE[1]/TSQLCommand[1]/CommandText[1]',
                                'nvarchar(max)')

        ROLLBACK
        BEGIN TRANSACTION

        IF OBJECT_ID('dbo.SpHisto', 'U') IS NULL 
            SELECT TOP ( 0 )

  • ,
GETDATE() AS DateModified INTO dbo.SpHisto FROM sys.sql_modules INSERT INTO dbo.SpHisto SELECT *, GETDATE() AS DateModified FROM sys.sql_modules WHERE object_id = @id EXEC ( @sql ) SET NOCOUNT OFF END GO

Conclusion :


Attention ce n'est qu'une première version, un bug n'est pas à exclure.

Christian Robert - MVP SQL Server
http://blogs.developpeur.org/christian/

A voir également

Ajouter un commentaire

Commentaires

yalk1960
Messages postés
4
Date d'inscription
vendredi 11 janvier 2008
Statut
Membre
Dernière intervention
19 février 2008
-
J'aimerai savoir si mon query est correcte, je voudrais copier une table SCH_website_xml dans une nouvelle table journal_update, qui crée un champ date de création pour chaque fois que le query est lancé.
Pouvez-vous m'aider?

--Update de la table SCH_website_xml avec création d'une table avec les informations
create trigger up_on_SCH_website_xml on SCH_website_xml
for update
as
declare @table varchar(20) declare @genre varchar(20) declare @xml varchar (20)
set @table='SCH_website_xml'
set @genre='modification'
set @xml='SCH_inscription'
begin
insert into journal_backup select current_user,@table,@genre,@xml current_timestamp
end

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.