Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SQL SERVER 2005 : HISTORISER LES PROCÉDURES STOCKÉES D'UNE BASE DE DONNÉES


Information sur la source



Description

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

  • 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
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/
 

Commentaires et avis

signaler à un administrateur
Commentaire de yalk1960 le 12/02/2008 14:19:05 5/10

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

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

comment peut-on programmer avec une version de Sql gratuite puis ensuite l'installer sur SqlServer?? [ par sandra26 ] Bonjour, voila je sais programmer en Sql mais je ne connais pas comment se passe les relations entre tous les Sql qui existent.En fait je voudrais fai Récupération de résultat avec un EXEC (@TSQL_String) [ par Malkuth ] Salut a tous une petite question matinale avant d'aller me coucher :Existe-t'il un moyen de récupérer une valeur retourner par un exec sur une Chaine Equivalent du "load data infile" en SQLSERVER [ par yanis7518 ] Slt a tousje souhaiterai savoir si il existe une commande equivalente au "load data infile 'file' replace into table " Récupérer la version de SQL via VB6 [ par drakkard ] Bonjour Bonjour,comment connaitre la version de SQL depuis un poste client, si c'est la version EXPRESS, MSDE ou SERVER installéeMerci d'avance... Bid Logique TSQL [ par cbu ] Bonjour,je suis complètement dans le flou avec ma procédure stockée ..Je vous explique :J'ai 2 tables T_CLIENT Cli_IDCli_NomCli_PrenomT_FACTUREFac_IDF sqlserver [ par sidalilo ] salut les amis. je suis etudiant et je veux les etapes pour joindre mes tables d'une application dans sqlserver afin que mon application peut marcher Export base de données SqlServer vers Oracle [ par issam164 ] Bonjour, Je veux exporter une base de données SqlServer vers une procédure stockée [ par caudette ] bonjour,j'ai une prodédure stockée d'insertion des données mais elle ne fonctionne. l'erreur est trop de parametres;l'insertion doit se faire juste da Problème d'égalite sous sqlserver 2005 [ par slecoustre ] bonjourje viens de m'apercevoir sur mon serveur sql que lorsque j'execute cette requete:SELECT 1 WHERE<f connexion sqlserver [ par issam164 ] Bonjour,je travaille sur une application web developpé en asp.net j'ai un message d'erreur qui se lance comme suit : Une erreur s'est produ


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,624 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.