Дата последнего изменения объекта - PullRequest
7 голосов
/ 17 сентября 2008

Как узнать дату последнего изменения объекта MS SQL Server 2000?

Мне нужно получить список всех представлений, процедур, функций и т. Д., Которые были изменены с 15 августа. В sysObjects я вижу дату создания объектов, но мне нужно знать, когда они были изменены в последний раз.

Примечание: это база данных SQL 2000.

Ответы [ 4 ]

13 голосов
/ 26 февраля 2010

Я знаю, что это немного устарело, но можно просмотреть последнюю измененную дату сохраненных процедур и функций с помощью этого запроса:

USE [Your_DB]    
SELECT * FROM INFORMATION_SCHEMA.ROUTINES

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

6 голосов
/ 17 сентября 2008

Обратите внимание, что SQL Server на самом деле не записывает дату последнего изменения. Он не существует ни в каких системных таблицах.

Отчет «История изменений схемы» фактически построен из трассировки по умолчанию . Поскольку многие администраторы (и веб-хосты) отключают это, это может не сработать для вас. У Бака Вуди было хорошее объяснение того, как работает этот доклад здесь . Данные также являются временными.

По этой причине вы никогда не должны полагаться на отчет истории изменений схемы. Альтернативы:

  • Используйте Триггеры DDL , чтобы записать все изменения схемы в таблицу по вашему выбору.
  • Применение протокола, в котором представления и процессы никогда не изменяются, они только удаляются и воссоздаются. Это означает, что созданная дата также будет последней обновленной датой (очевидно, это не работает с таблицами).
  • Бдительно переводите ваши объекты SQL и схему в систему контроля версий.

-

Редактировать: увидел, что это SQL 2000. Это исключает трассировку по умолчанию и триггеры DDL. Вам остается один из самых утомительных вариантов, которые я перечислил выше.

5 голосов
/ 18 марта 2014

Я получил подтвержденный ответ на любую вышеуказанную процедуру.

Шаг -1 Выполнить процедуру в БД

SELECT name, create_date, modify_date 
FROM sys.objects
WHERE type = 'p' 

Шаг -2 Затем скопируйте текст в Excel с заголовками

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

С уважением, Судир Пуна

1 голос
/ 08 июня 2015

Это не всегда правильно, потому что modify_date - это дата, когда объект был последний раз изменен с помощью инструкции ALTER. Если объект является таблицей или представлением, modify_date также изменяется при создании или изменении кластерного индекса в таблице или представлении.

...