Найти детали запроса или оператора, который вызвал неожиданное обновление таблицы - PullRequest
1 голос
/ 27 мая 2010

У нас были проблемы с призрачными обновлениями в нашей БД (SQL Server 2005). Поля меняются, и мы не можем найти процедуру, которая выполняет обновление.

Можно ли каким-либо образом (возможно, использовать триггер обновления?) Определить причину обновления? Оператор SQL, процесс, имя пользователя / логин и т. Д.

Ответы [ 4 ]

3 голосов
/ 27 мая 2010

Использовать SQL Server Profiler

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

По крайней мере, вы попадете к процедуре / запросу, который отвечает, а также к пользователю / компьютеру за изменения, что оставляет это в вашем коде.

1 голос
/ 27 мая 2010

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

1 голос
/ 27 мая 2010

Я нашел и статью, которая может помочь вам здесь:

http://aspadvice.com/blogs/andrewmooney/archive/2007/08/20/SQL-Server-2005-Audit-Log-Using-Triggers.aspx

0 голосов
/ 27 мая 2010

Я бы, вероятно, использовал AutoAudit , чтобы сначала генерировать триггеры в таблице.

Это несколько ограничено с точки зрения точного знания того, что меняет ваши данные, но это только начало.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...