Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как узнать какая процедура запустила триггер / 10 сообщений из 10, страница 1 из 1
01.04.2021, 15:37
    #40058892
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать какая процедура запустила триггер
привет
подскажите пожалуйста, хочу написать триггер на логирование добавления и изменения данных в таблице
и мне нужно знать какая процедура внесла изменения в таблицу, хочу в триггере записать изменения + название процедуры
можно такое провернуть?
...
Рейтинг: 0 / 0
01.04.2021, 15:42
    #40058896
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать какая процедура запустила триггер
Sandist,

триггер запускает не процедура, а insert/update/delete.
Если Вам требуется вести журнал, то доработайте процедуры так, чтобы они при изменениях писали свое имя и время, например, в выделенные столбцы таблицы.
...
Рейтинг: 0 / 0
01.04.2021, 15:54
    #40058903
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать какая процедура запустила триггер
Владислав Колосов,
нашел ответ на свой вопрос

declare @txtBuf table (EventType varchar(30), Parameters smallint, EventInfo varchar(max))
insert into @txtBuf (EventType, Parameters, EventInfo)
EXEC ('DBCC INPUTBUFFER(@@spid)')
...
Рейтинг: 0 / 0
01.04.2021, 16:00
    #40058907
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать какая процедура запустила триггер
Sandist
Владислав Колосов,
нашел ответ на свой вопрос

declare @txtBuf table (EventType varchar(30), Parameters smallint, EventInfo varchar(max))
insert into @txtBuf (EventType, Parameters, EventInfo)
EXEC ('DBCC INPUTBUFFER(@@spid)')



INPUTBUFFER - это не процедура вызвавшая триггер, это текст запроса, пришедший с клиента.
...
Рейтинг: 0 / 0
01.04.2021, 16:11
    #40058910
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать какая процедура запустила триггер
msLex,
да, это подходит
...
Рейтинг: 0 / 0
01.04.2021, 16:18
    #40058913
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать какая процедура запустила триггер
Sandist,

INPUTBUFFER может быть пуст в некоторых случаях. Видимо, Вы совсем в отчаянном положении :)
...
Рейтинг: 0 / 0
01.04.2021, 16:56
    #40058919
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать какая процедура запустила триггер
Владислав Колосов,

дайте пожалуйста альтернативу
...
Рейтинг: 0 / 0
01.04.2021, 16:59
    #40058921
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать какая процедура запустила триггер
Sandist
Владислав Колосов,

дайте пожалуйста альтернативу

https://stackoverflow.com/questions/4261278/is-it-possible-for-a-trigger-to-find-the-name-of-the-stored-procedure-that-modif
...
Рейтинг: 0 / 0
05.04.2021, 23:25
    #40060027
__Avenger__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать какая процедура запустила триггер
Код: sql
1.
OUTER APPLY sys.dm_exec_input_buffer(@@SPID, NULL) AS ib 



sys.dm_exec_input_buffer
...
Рейтинг: 0 / 0
06.04.2021, 10:42
    #40060074
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать какая процедура запустила триггер
Проблема в том, что если данные изменяет не процедура, то, очевидно, название процедуры узнать никак нельзя.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как узнать какая процедура запустила триггер / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]