【问题标题】:Date object last modified上次修改日期对象
【发布时间】:2008-09-16 23:55:18
【问题描述】:

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

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

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

【问题讨论】:

  • 对于可能找到这篇文章并正在寻找我选择的内容的其他人 * from sys.all_objects order by modify_date desc 在 SQL 2008 R2 中获取此信息

标签: sql-server sql-server-2000


【解决方案1】:

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

USE [Your_DB]    
SELECT * FROM INFORMATION_SCHEMA.ROUTINES

我只是想提一下这个很好,因为我搜索了这个解决方案并且这个帖子具有误导性。

【讨论】:

  • 正是我想要的,非常感谢!
【解决方案2】:

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

架构更改历史报告实际上是从Default Trace 构建的。由于许多管理员(和网络主机)将其关闭,它可能不适合您。 Buck Woody 很好地解释了这份报告的工作原理here。数据也是临时的。

因此,您永远不应依赖架构更改历史报告。替代方案:

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

--

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

【讨论】:

  • 感谢您的建议,这将有助于我们前进。猜猜我现在无法获得一份回顾性清单。
【解决方案3】:

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

步骤 -1 在 DB 上执行过程

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

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

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

问候, 苏迪尔 浦那

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 2017-11-19
      • 1970-01-01
      • 2020-03-27
      • 2016-11-14
      • 2020-09-30
      • 1970-01-01
      相关资源
      最近更新 更多