SQL Server: получите имя приложения, вызывающее обновление в триггере

Мы пытаемся определить источник неожиданных обновлений, происходящих в таблице 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 для получения этой информации?

Ответы

Ответ 1

SELECT APP_NAME()

Ответ 2

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

Ответ 3

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

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