SQL Server 2000: есть ли способ узнать, когда запись была изменена в последний раз?

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

Ответов (5)

Решение

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

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

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

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

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

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

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

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

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

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