【发布时间】:2011-08-24 17:56:16
【问题描述】:
是否可以从昨天创建/上次更新日期 > 的 SQL Server 数据库中获取存储过程的列表?
sys.sql_modules 似乎没有日期。它必须存储在其他地方。
【问题讨论】:
标签: sql sql-server sql-server-2008 stored-procedures
是否可以从昨天创建/上次更新日期 > 的 SQL Server 数据库中获取存储过程的列表?
sys.sql_modules 似乎没有日期。它必须存储在其他地方。
【问题讨论】:
标签: sql sql-server sql-server-2008 stored-procedures
这将列出所有存储过程及其创建和修改日期:
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 作为提到的另一个答案。
【讨论】:
sys.procedures 包含 create_date 和 modify_date
【讨论】:
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。
【讨论】:
使用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;
【讨论】:
试试这个:
SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'P'
AND modify_date >= DATEADD(day, -1, getdate())
ORDER BY modify_date desc
【讨论】: