Envoyé par
Delioneras
J'ai commencé à regarder sur ce sujet, j'ai trouvé des débuts de piste sur les triggers DDL un peu après avoir posté sur le forum. Mais j'avoue ne pas encore trop comprendre comment manipuler le EventData.
Tout dépend de ce que vous voulez faire (le but est-il simplement pour le moment d'identifier qui ajoute cette colonne ? )
pour mieux comprendre EvenData, vous pouvez (sur un serveur de dev dans un premier temps)
1/ créer une table pour recevoir les évènements :
CREATE TABLE DDLLog(DateHeure DATETIME2(3), Donnee XML);
2/ ajouter un trigger qui ajoute l'intégralité de ce que renvoi EVENTDATA() :
1 2 3 4 5 6
| CREATE TRIGGER TRG_LOG_ALTER_TABLE
ON DATABASE
FOR ALTER_TABLE
AS
INSERT INTO DDLLog(DateHeure, Donnee) VALUES(CURRENT_TIMESTAMP, EVENTDATA())
; |
Vous pourrez alors récupérer l'ensemble de son contenu et le manipuler en dehors du contexte trigger où c'est un peu plus compliqué.
Mais par la suite, vous pourrez par exemple empêcher spécifiquement l'ajout de cette colonne dans cette table, en exploitant le contenu de EVENTDATA et en faisant un rollback dans le trigger.
Partager