获取在特定日期创建和/或修改的存储过程列表?

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 no sys.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

【讨论】:

以上是关于获取在特定日期创建和/或修改的存储过程列表?的主要内容,如果未能解决你的问题,请参考以下文章

SQL修改存储过程创建日期

如何根据特定日期获取最后修改的文件并导入python脚本[重复]

如何创建可以返回特定实体以及所有实体的 Oracle 存储过程

如何通过在spring数据本机查询或存储库中传递userIds列表来获取用户的最大日期时间戳

oracle如何列出特定存储过程中使用的所有表

Oracle学习笔记