Ответ 1
SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'P'
ORDER BY modify_date DESC
type
для функции - это FN
а не P
для процедуры. Или вы можете отфильтровать столбец имен.
Мне нужно проверить, когда функция была изменена в прошлый раз. Я знаю, как проверить дату создания (он находится в окне свойств функций в SQL Server Management Studio).
Я обнаружил, что в SQL Server 2000 было невозможно проверить дату изменения (см. Этот пост: Можно ли определить, когда хранимая процедура была в последний раз модифицирована в SQL Server 2000?)
Можно ли проверить это в SQL Server 2008? MS добавляет новую функцию в системные таблицы, которые позволяют ее проверить?
SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'P'
ORDER BY modify_date DESC
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'
Это можно использовать для проверки даты изменения 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