【问题标题】:How to find which table received an update/insert/delete command如何查找哪个表收到了更新/插入/删除命令
【发布时间】:2022-11-14 11:41:16
【问题描述】:

有什么方法可以在 SQL Server 中找到最近修改过的表(就数据而言)?例如,我正在处理一个很难调试的写得很糟糕的代码,为了能够找到正在发生的事情,我想通过该系统创建一个记录,然后查询在数据库。

我遇到了这个查询

select schema_name(schema_id) as schema_name,
   name as table_name,
   create_date,
   modify_date
from sys.tables
where modify_date > DATEADD(DAY, -30, CURRENT_TIMESTAMP)
order by modify_date desc;

但它似乎没有给我我需要的东西。当我尝试在表中手动更新和插入记录时,此查询仍然显示零结果。

我无法在该数据库上启用 CDC 功能。

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    跨数据库表查找更改将是非常过分的操作,因为将更新多个表。

    • 如果表中有审计列,则可以使用表的 modifedAt 列进行查找。如果您有审计表,您可以找出表中发生的更改。

    • 如果没有办法查出表的变化,可以通过以下方式进行。但是,如果您正在监视所有表,这将是服务器上的巨大负载。

      1. 启用数据库审核
      2. 启用扩展事件

        参考:Stack Exchange post

    【讨论】:

    • 有没有办法不改变数据库中的任何东西?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多