【问题标题】:Find details of a query or statement that caused an unexpected table update查找导致意外表更新的查询或语句的详细信息
【发布时间】:2010-05-27 14:26:32
【问题描述】:

我们的数据库 (SQL Server 2005) 中的幽灵更新一直存在问题。字段正在更改,我们找不到执行更新的例程。

有什么方法(也许使用更新触发器?)来确定导致更新的原因? SQL语句、进程、用户名/登录名等?

【问题讨论】:

  • 听起来你可能有 SQL 注入漏洞。

标签: sql sql-server-2005


【解决方案1】:

使用 SQL Server Profiler

您可能希望过滤掉不需要的东西,因此可能需要一段时间才能进行设置。

至少它会带您进入负责更改的过程/查询以及用户/计算机,从而在您的代码中找到它。

【讨论】:

  • 我通常设置一个跟踪记录到一个新的数据库表。这样您就可以编写一些简单的 SQL 来查找您正在寻找的特定更新。确保包含您需要的所有列和事件,可能通过运行测试更新并检查它是否被包含而不是被过滤掉。
【解决方案2】:

【讨论】:

    【解决方案3】:

    您要求的所有信息在执行更新时都可用。 SQL Profiler 肯定会工作,但要制作一个不会让您的数据不堪重负的过滤器需要做一些工作,尤其是在您需要一次运行数天或数周的情况下。更新触发器很容易创建,您可以将所需的信息记录在新表中。

    【讨论】:

      【解决方案4】:

      我可能会先使用AutoAudit 在表上生成触发器。

      在确切了解什么正在改变您的数据方面有些局限,但这是一个开始。

      您始终可以查看触发器并修改它们以仅记录您感兴趣的某些列,并且可能会获得当前未记录的更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-15
        • 2011-02-27
        • 1970-01-01
        • 2023-02-24
        • 1970-01-01
        • 2018-07-01
        • 2015-11-02
        • 2011-05-19
        相关资源
        最近更新 更多