如何在SQL Server中检查存储过程或函数的上次更改日期

Mar*_*acz 167 stored-procedures sql-function sql-server-2008 sql-server-2008-r2

我需要检查上次功能何时更改.我知道如何检查创建日期(它位于SQL Server Management Studio的函数属性窗口中).
我发现在SQL Server 2000中无法检查修改日期(请看这篇文章:是否可以确定SQL Server 2000中最后一次修改存储过程的时间?)

是否可以在SQL Server 2008中进行检查?MS是否在系统表中添加了一些允许检查它的新功能?

Chr*_*ver 355

SELECT name, create_date, modify_date 
FROM sys.objects
WHERE type = 'P'
ORDER BY modify_date DESC
Run Code Online (Sandbox Code Playgroud)

type一个函数FN,而不是P为程序.或者您可以在名称列上进行过滤.

  • 似乎某些权限可能导致从此查询中省略结果 - 即使有一些结果返回.我们根据用户权限观察到了不同的结果 - 但我没有将其缩小到涉及哪些权威机构.长话短说:如果你能确保看到一切,就把这个查询作为SA运行. (4认同)
  • 你确实是对的。http://msdn.microsoft.com/en-us/library/ms190324%28v=sql.105%29.aspx “在 SQL Server 2005 及更高版本中,目录视图中元数据的可见性仅限于用户拥有或已被授予某些权限。有关详细信息,请参阅元数据可见性配置。 (3认同)
  • 一句警告。如果 OP 仅指通过 ALTER DDL 语句对模块进行的更改,那么 `modify_date` 可能会产生误导。例如,如果在模块上执行 `sys.sp_refreshsqlmodule`,即使从技术上讲模块的代码没有改变,`modify_date` 也会改变。 (2认同)
  • @im_one在WHERE行之后,添加AND名称=“指定过程”,其中“指定过程”是您要查找的存储过程的名称。 (2认同)

ope*_*hac 40

试试这个存储过程:

SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'P'
AND name = 'myProc'
Run Code Online (Sandbox Code Playgroud)


小智 13

这是找到函数的正确解决方案:

SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'fn'
AND name = 'fn_NAME'
Run Code Online (Sandbox Code Playgroud)


Aru*_*E S 7

我发现这被列为新技术

这非常详细

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 
Run Code Online (Sandbox Code Playgroud)


小智 5

对于 SQL 2000,我会使用:

SELECT name, crdate, refdate 
FROM sysobjects
WHERE type = 'P' 
ORDER BY refdate desc
Run Code Online (Sandbox Code Playgroud)


LTA*_*LTA 5

在最新版本(2012 或更高版本)中,我们可以使用此查询获取修改后的存储过程详细信息

SELECT create_date, modify_date, name FROM sys.procedures 
ORDER BY modify_date DESC
Run Code Online (Sandbox Code Playgroud)