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

StackOverflow https://stackoverflow.com/questions/2809

  •  08-06-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

ОмниАудит — это коммерческий пакет, который реализует аудит всей базы данных.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top