Определение того, какое приложение изменяет значение базы данных sql - PullRequest
3 голосов
/ 23 мая 2011

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

Мое приложение меняет определенное значение вопределенная строка таблицы, но что-то постоянно меняет ее обратно примерно через неделю, и я нахожусь в тупике, чтобы выяснить, что это может быть.

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

1 Ответ

4 голосов
/ 23 мая 2011

Если у вас есть доступ к строкам подключения для устаревших приложений, добавьте ключевое слово Application Name в строку подключения. Некоторая информация здесь.

На стороне сервера создайте триггер для таблицы, которую вы хотите отслеживать.В журнале триггера app_name() в таблицу журнала.Например:

create trigger Tracker
on TableName
after insert, update, delete 
as
    insert LogTable(TableName, ApplicationName)
    values('TableName', app_name())
go

Кроме того, если у вас есть выделенный пользователь для приложения, вы можете проверить и записать значение system_user.

Если ваши приложения размещены на разных серверах, вы можете добавить IP-адрес клиента.тоже.Вы можете проверить это следующим образом select client_net_address from sys.dm_exec_connections where session_id = @@SPID.

Кроме того, вы можете использовать профилировщик для просмотра всех этих параметров.

Но все это с предостережением вы можете обновить строки подключения.

...