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 получить эту информацию?


person marc_s    schedule 17.03.2011    source источник


Ответы (3)


SELECT APP_NAME()

person Martin Smith    schedule 17.03.2011
comment
Шиш !! Не может быть это просто, Мартин!! ;-) Я обыскал все значения @@name и ничего не нашел...... - person marc_s; 17.03.2011
comment
@marc - Вы также можете получить его от SELECT program_name from sys.dm_exec_sessions where session_id=@@SPID, там могут быть другие интересные вещи. - person Martin Smith; 17.03.2011
comment
Если у вас есть несколько приложений, обращающихся к базе данных и использующих аудит, это хорошо иметь как часть ваших таблиц аудита. Это, безусловно, помогло нам отслеживать вещи в прошлом. - person HLGEM; 17.03.2011

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

кстати, это замечательная часть T-SQL

person luckyluke    schedule 17.03.2011
comment
Вы потеряли ссылку. Я полагаю, что новая версия только что вышла (или выйдет очень скоро), ссылка на версию: sqlblog.com/blogs/adam_machanic/archive/2010/10/21/ - person Martin Smith; 17.03.2011
comment
Ссылка на последнюю и лучшую бета-версию из твиттер-канала Адама Мачаника sqlblog.com/files/folders/ бета/entry34124.aspx - person Martin Smith; 17.03.2011

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

person thomas    schedule 17.03.2011
comment
Спасибо, но мне действительно нужно имя приложения - оно работает на одном сервере базы данных, это имя мне не поможет. - person marc_s; 17.03.2011