7

如何找出 MS SQL Server 2000 对象的最后修改日期?

我需要获取自 8 月 15 日以来修改的所有视图、过程、函数等的列表。在 sysObjects 中,我可以看到创建对象的日期,但我需要知道它们最后一次更改的时间。

注意:这是一个 SQL 2000 数据库。

4

4 回答 4

14

我知道这有点旧,但是可以使用以下查询查看存储过程和函数的最后更改日期:

USE [Your_DB]    
SELECT * FROM INFORMATION_SCHEMA.ROUTINES

只是觉得很高兴提及这一点,因为我搜索了这个解决方案并且这个线程具有误导性。

于 2010-02-26T16:12:00.063 回答
6

请注意,SQL Server 实际上并不记录最后修改日期。它不存在于任何系统表中。

Schema Changes History 报告实际上是从Default Trace构建的。由于许多管理员(和网络主机)将其关闭,它可能不适合您。Buck Woody 很好地解释了这份报告是如何运作。数据也是临时的。

出于这个原因,您永远不应该依赖 Schema Changes History 报告。备择方案:

  • 使用DDL 触发器将所有模式修改记录到您选择的表中。
  • 执行一个协议,其中视图和过程永远不会改变,它们只会被删除和重新创建。这意味着创建日期也将是最后更新日期(这显然不适用于表格)。
  • 在源代码控制中谨慎地对 SQL 对象和架构进行版本控制。

--

编辑:看到这是 SQL 2000。排除了默认跟踪和 DDL 触发器。您只剩下我上面列出的更乏味的选项之一。

于 2008-09-17T00:21:16.327 回答
6

我已通过以下查询获得修改日期的上述任何程序历史记录的确认答案

步骤 -1 在 DB 上执行该过程

SELECT name, create_date, modify_date 
FROM sys.objects
WHERE type = 'p' 

步骤-2然后将文本复制到带有标题的Excel

选择路由列,然后将确切的程序名称粘贴到 ^F 窗口中,然后按回车键,您将获得准确的修改日期。

问候, 苏迪尔浦那

于 2014-03-18T07:09:39.643 回答
1

这并不总是正确的,因为 modify_date 是对象上次使用 ALTER 语句修改的日期。如果对象是表或视图,则 modify_date 也会在创建或更改表或视图上的聚集索引时更改。

于 2015-06-08T17:30:54.520 回答