获取在特定日期创建和/或修改的存储过程列表?
Posted
技术标签:
【中文标题】获取在特定日期创建和/或修改的存储过程列表?【英文标题】:Get the list of stored procedures created and / or modified on a particular date? 【发布时间】:2012-09-28 11:20:34 【问题描述】:我想查找我创建了哪个存储过程,还想查找我在特定日期(例如 2012 年 9 月 27 日(27/09/2012))在我的 SQL Server 中修改了哪个存储过程。
是否有任何查询可以列出在该日期创建和修改的这些程序?
【问题讨论】:
【参考方案1】:您可以在任何给定的 SQL Server 数据库中尝试此查询:
SELECT
name,
create_date,
modify_date
FROM sys.procedures
WHERE create_date = '20120927'
其中列出了名称、创建和最后修改日期 - 不幸的是,它没有记录谁创建和/或修改了相关存储过程。
【讨论】:
谢谢。您能否通过包括如何处理用户定义的函数来扩展这个答案? @Lijo: see my question "Why is there nosys.functions
catalog view?" - 接受的答案向您展示如何从 sys.objects
获取各种类型的函数【参考方案2】:
这里是“新学校”版本。
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'PROCEDURE' and ROUTINE_SCHEMA = N'dbo'
and CREATED = '20120927'
【讨论】:
您能否提供任何说明使用INFORMATION_SCHEMA
将是当前首选方式(或“较新的学校”)的来源?
我没有说“首选”。 “较新”,例如,它在以后的时间里变得可用。并从 Sql Server 2005 开始。msdn.microsoft.com/en-us/library/ms186778%28v=sql.90%29.aspx 一个轻微的优势是,如果您处理多个 RDBMS 系统,那么您正在学习一种标准,而不是一种专有方法。 en.wikipedia.org/wiki/Information_schema
INFORMATION_SCHEMA.ROUTINES
表有ROUTINE_DEFINITION
列(这是存储过程的sql 代码),而sys.procedures
没有。【参考方案3】:
SELECT name
FROM sys.objects
WHERE type = 'P'
AND (DATEDIFF(D,modify_date, GETDATE()) < 7
OR DATEDIFF(D,create_date, GETDATE()) < 7)
【讨论】:
【参考方案4】:SELECT * FROM sys.objects WHERE type='p' ORDER BY modify_date DESC
SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'P'
SELECT name, crdate, refdate
FROM sysobjects
WHERE type = 'P'
ORDER BY refdate desc
【讨论】:
嗨 Abhik kashyap singh,欢迎来到 Stack Overflow。我对您的回答有一点意见:您的代码可能是正确的,但在某些情况下,它会是一个更好的答案;例如,您可以解释这个提议的更改如何以及为什么会解决提问者的问题,可能包括指向相关文档的链接。这将使它对他们更有用,对正在寻找类似问题的解决方案的其他网站读者也更有用。【参考方案5】:对于 SQL Server 2012:
SELECT name, modify_date, create_date, type
FROM sys.procedures
WHERE name like '%XXX%'
ORDER BY modify_date desc
【讨论】:
以上是关于获取在特定日期创建和/或修改的存储过程列表?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据特定日期获取最后修改的文件并导入python脚本[重复]
如何创建可以返回特定实体以及所有实体的 Oracle 存储过程