SQL Server 2000: есть ли способ определить дату последнего изменения записи?

В таблице нет последнего обновленного поля, и мне нужно знать, когда обновлялись существующие данные. Поэтому добавление последнего обновленного поля не поможет (насколько я знаю).

5.08.2008 20:33:21
5 ОТВЕТОВ
РЕШЕНИЕ

SQL Server 2000 не отслеживает эту информацию для вас.

Могут быть творческие / нечеткие способы угадать, какой была эта дата в зависимости от модели вашей базы данных. Но если вы говорите об одной таблице, не имеющей отношения к другим данным, то вам не повезло.

5
5.08.2008 20:58:17

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

0
5.08.2008 20:34:41

OmniAudit - это коммерческий пакет, включающий аудит всей базы данных.

Свободным методом было бы написать триггер для каждой таблицы, который добавляет записи в таблицу аудита при срабатывании.

0
5.08.2008 21:04:47

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

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

1
5.08.2008 21:32:01

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

Вот тот, который я использовал; это бесплатно и (только) работает с SQL Server 2000.

http://www.red-gate.com/products/SQL_Log_Rescue/index.htm

1
2.09.2008 05:43:32