Как проверить дату последнего изменения в хранимой процедуре или функции в SQL server


Мне нужно проверить, если функция была изменена в последний раз. Я знаю, как проверить дату создания (она находится в окне свойств функции в среде SQL Server Management Studio).
Я обнаружил, что в SQL Server 2000 невозможно проверить дату изменения ( посмотрите на это сообщение: можно ли определить, когда хранимая процедура была в последний раз изменена в SQL Server 2000?)

можно ли проверить это в SQL Server 2008? Добавляет ли MS какую-то новую функцию в системные таблицы, которые позволяют проверить это?

7 124

7 ответов:

SELECT name, create_date, modify_date 
FROM sys.objects
WHERE type = 'P'
ORDER BY modify_date DESC

The type функции FN, а не P для процедуры. Или вы можете фильтровать по столбцу "имя".

вы пробовали:

SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'P'
AND name = 'myProc'

Это правильное решение.

SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'fn'
AND name = 'fn_NAME'

Я нашел это в списке как новый метод

Это очень подробно

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'PROCEDURE' and ROUTINE_SCHEMA = N'dbo' 
order by  LAST_ALTERED desc

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'PROCEDURE' and ROUTINE_SCHEMA = N'dbo' 
order by  CREATED desc 


SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'FUNCTION' and ROUTINE_SCHEMA = N'dbo' 
order by  LAST_ALTERED desc

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'FUNCTION' and ROUTINE_SCHEMA = N'dbo' 
order by  CREATED desc 

для SQL 2000 я бы использовал:

SELECT name, crdate, refdate 
FROM sysobjects
WHERE type = 'P' 
ORDER BY refdate desc

в последней версии (2012 или более) мы можем получить измененные детали хранимой процедуры с помощью этого запроса

SELECT create_date, modify_date, name FROM sys.procedures 
ORDER BY modify_date DESC
SELECT *
FROM sys.objects
WHERE type IN ('FN', 'IF', 'TF') 
AND name = 'dgdsgds'