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

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

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

Ответ 1

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

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

Ответ 2

Попробуйте это для хранимых процедур:

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

Ответ 3

Это правильное решение для нахождения функции:

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

Ответ 4

Я нашел это в качестве новой техники

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

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 

Ответ 5

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

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

Ответ 6

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

SELECT create_date, modify_date, name FROM sys.procedures 
ORDER BY modify_date DESC

Ответ 7

SELECT *
FROM sys.objects
WHERE type IN ('FN', 'IF', 'TF') 
AND name = 'dgdsgds'

Ответ 8

Это можно использовать для проверки даты изменения functions и stored procedures вместе, упорядоченных по дате:

SELECT 'Stored procedure' as [Type] ,name, create_date, modify_date 
FROM sys.objects
WHERE type = 'P' 

UNION all

Select 'Function' as [Type],name, create_date, modify_date
FROM sys.objects
WHERE type = 'FN'
ORDER BY modify_date DESC

или:

SELECT type ,name, create_date, modify_date 
FROM sys.objects
WHERE type in('P','FN') 
ORDER BY modify_date DESC
-- this one shows type like : FN for function and P for stored procedure

Результат будет таким:

Type                 |  name      | create_date              |  modify_date
'Stored procedure'   | 'firstSp'  | 2018-08-04 07:36:40.890  |  2019-09-05 05:18:53.157
'Stored procedure'   | 'secondSp' | 2017-10-15 19:39:27.950  |  2019-09-05 05:15:14.963
'Function'           | 'firstFn'  | 2019-09-05 05:08:53.707  |  2019-09-05 05:08:53.707