如何从SQL Server数据库中获取最近添加的存储过程的列表

时间:2011-08-24 17:56:16

标签: sql sql-server sql-server-2008 stored-procedures

是否可以从SQL Server数据库获取存储过程的列表,其中创建/上次更新日期>昨天?

sys.sql_modules似乎没有约会。它必须存储在其他地方。

5 个答案:

答案 0 :(得分:6)

这将列出所有存储过程及其创建和修改日期:

SELECT name, modify_date
FROM sys.objects
WHERE type = 'P'
  AND modify_date >= DATEADD(Day, -1, CONVERT(Date, GETDATE()))
ORDER BY modify_date DESC;

编辑:由于modify_date将始终等于或create_date之后...另请注意,您可以使用sys.procedures作为另一个提及的答案。

答案 1 :(得分:6)

sys.procedures包含create_datemodify_date

答案 2 :(得分:5)

Information_Schema有几个视图可帮助审核各种对象。 Routines就是其中之一

select *
from INFORMATION_SCHEMA.ROUTINES
Where CREATED > DATEADD(dd, DATEDIFF(dd, 0, getdate()-1), 0)
Order by CREATED Desc

最后两列是Created和Last_Modified。

答案 3 :(得分:4)

使用sys.procedures。比sys.objects更直接(您不需要对类型进行过滤)和 - 虽然不如INFORMATION_SCHEMA便携 - 但sys.目录视图继续保留并扩展有关新功能的信息,而INFORMATION_SCHEMA不是。

例如,要查找自昨天午夜以来创建或修改的所有存储过程:

DECLARE @yesterday DATE = DATEADD(DAY, -1, CURRENT_TIMESTAMP);

SELECT OBJECT_SCHEMA_NAME([object_id]), name, create_date, modify_date
    FROM sys.procedures 
    WHERE modify_date >= @yesterday
    ORDER BY modify_date DESC;

答案 4 :(得分:2)

试试这个:

SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'P'
AND modify_date >= DATEADD(day, -1, getdate())
ORDER BY modify_date desc