Получить вызывающий триггер в SQL Server - PullRequest
4 голосов
/ 30 марта 2011

Можете ли вы посоветовать мне, как я могу получить идентификатор звонящего или имя, которое выполнило триггер?

Например, я хочу знать, какой SP выполняет триггер или, возможно, триггер, вызываемый обновлениями из студии управления?

Я знаю, что @@ PROCID возвращает идентификатор триггера и не может использоваться.

Также я знаю решение, когда в SP мы пишем CONTEXT_INFO и читаем его из триггера. Но в этом случае мы должны установить SET CONTEXT_INFO во всех SP, который изменяет некоторую таблицу.

Существует ли какой-нибудь самый простой способ, например @@ PROCID?

1 Ответ

4 голосов
/ 30 марта 2011

Если это SQL Server 2005 или 2008 и триггер DDL, вы можете использовать eventdata().

Вот ссылка на страницу MSDN.

По сути, он возвращает набор данных XML, который вы можете проанализировать, чтобы получить информацию о том, кто его вызвал (data(/EVENT_INSTANCE/LoginName)[1]), какая команда была и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...