5 votes

Obtenir l'appelant du déclencheur dans SQL Server

Pouvez-vous me conseiller sur la façon dont je peux récupérer l'ID ou le nom de l'appelant qui a exécuté un déclencheur ?

Par exemple, je veux savoir quel SP exécute un déclencheur ou peut-être un déclencheur appelé par des mises à jour depuis Management Studio ?

Je sais que @@PROCID renvoie l'ID du déclencheur et ne peut pas être utilisé.

Je connais également la solution qui consiste à écrire CONTEXT_INFO dans le SP et à le lire dans le trigger. Mais dans ce cas, nous devons définir CONTEXT_INFO dans tous les SP qui modifient une table.

Existe-t-il un moyen plus simple comme @@PROCID ?

5voto

JNK Points 32743

Si c'est SQL Server 2005 ou 2008, et un déclencheur DDL, vous pouvez utiliser eventdata() .

Voici un lien vers la page msdn.

En principe, il renvoie un ensemble de données XML que vous pouvez analyser pour obtenir des informations telles que l'auteur de l'appel ( data(/EVENT_INSTANCE/LoginName)[1] ), ce qu'était la commande, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X