【问题标题】:How to get a list of recently added stored procs from SQL Server database如何从 SQL Server 数据库中获取最近添加的存储过程列表
【发布时间】:2011-08-24 17:56:16
【问题描述】:

是否可以从昨天创建/上次更新日期 > 的 SQL Server 数据库中获取存储过程的列表?

sys.sql_modules 似乎没有日期。它必须存储在其他地方。

【问题讨论】:

    标签: sql sql-server sql-server-2008 stored-procedures


    【解决方案1】:

    这将列出所有存储过程及其创建和修改日期:

    SELECT name, modify_date
    FROM sys.objects
    WHERE type = 'P'
      AND modify_date >= DATEADD(Day, -1, CONVERT(Date, GETDATE()))
    ORDER BY modify_date DESC;
    

    编辑:因为modify_date 将始终等于或在create_date 之后...另请注意,您可以只使用sys.procedures 作为提到的另一个答案。

    【讨论】:

    • 既然 OP 指的是“昨天”,最好去掉一天中的时间部分。
    【解决方案2】:

    sys.procedures 包含 create_datemodify_date

    【讨论】:

      【解决方案3】:

      Information_Schema 有几个视图来帮助查看各种对象。 Routines 就是其中之一

      select *
      from INFORMATION_SCHEMA.ROUTINES
      Where CREATED > DATEADD(dd, DATEDIFF(dd, 0, getdate()-1), 0)
      Order by CREATED Desc
      

      最后两列是 Created 和 Last_Modified。

      【讨论】:

        【解决方案4】:

        使用sys.procedures。比 sys.objects 更直接(您不需要过滤类型)并且 - 虽然不如 INFORMATION_SCHEMA 可移植 - sys. 目录视图继续得到维护和扩展,包含有关新功能的信息,而 INFORMATION_SCHEMA 是不是。

        例如,查找自昨天午夜以来创建或修改的所有存储过程:

        DECLARE @yesterday DATE = DATEADD(DAY, -1, CURRENT_TIMESTAMP);
        
        SELECT OBJECT_SCHEMA_NAME([object_id]), name, create_date, modify_date
            FROM sys.procedures 
            WHERE modify_date >= @yesterday
            ORDER BY modify_date DESC;
        

        【讨论】:

          【解决方案5】:

          试试这个:

          SELECT name, create_date, modify_date
          FROM sys.objects
          WHERE type = 'P'
          AND modify_date >= DATEADD(day, -1, getdate())
          ORDER BY modify_date desc
          

          【讨论】:

          • 由于 OP 指的是“昨天”,因此最好包含一整天。
          猜你喜欢
          • 1970-01-01
          • 2016-03-15
          • 1970-01-01
          • 1970-01-01
          • 2021-12-27
          • 2021-07-31
          • 2010-09-13
          • 2014-05-02
          • 1970-01-01
          相关资源
          最近更新 更多