SQL Server: получить имя приложения, вызывающего обновление в триггере - PullRequest
16 голосов
/ 17 марта 2011

Мы пытаемся определить источник некоторых неожиданных обновлений, происходящих в таблице SQL Server. Что я хотел бы сделать, так это создать триггер в этой таблице, отслеживающий интересующий нас столбец, и, когда происходят обновления, записать некоторую информацию аудита в отдельную таблицу.

Прекрасно работает для таких вещей, как имя пользователя, дата, старые и новые значения столбцов (из таблиц триггеров Inserted и Deleted) - но я бы хотел больше: -)

В SQL Profiler вы можете видеть имя приложения, подключенного к SQL Server, в профилях - часть, которую можно определить в строке подключения как Application Name:

Data Source=(local);Initial Catalog=AdventureWorks;
Integrated Security=True;Application Name="My Application"

Есть ли способ в триггере T-SQL FOR UPDATE получить эту информацию?

Ответы [ 3 ]

31 голосов
/ 17 марта 2011
SELECT APP_NAME()

0 голосов
/ 17 марта 2011

Marc_S хранимая процедура sP_whoIsActive, вероятно, решит Ваши проблемы как опубликовано здесь

и, кстати, это потрясающая часть T-SQL

0 голосов
/ 17 марта 2011

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

...