1

这似乎是一个愚蠢的问题,但我现在处于一个头->墙的情况。

我在一个大型 ERP 应用程序上工作,其中 SQL Server 2005 数据库由多个不同的应用程序更新。我试图找出特定表中的删除来自何处。

我尝试使用 Profiler,但我无法过滤足够多的事件类型以识别错误的 SP,因为来自各个方面的数据库每秒都有很多命中。此外,Profiler 似乎更倾向于查找 DDL 更改或 Object DROP 类型的操作。

我只是想回答这个问题:什么存储了 Proc。还是 SQL 查询导致从表 X 中删除记录?

我应该使用什么工具?我希望避免像Trigger based Auditing这样的事情。或者 Profiler 是进行此类调查的最佳工具吗?还是第三方工具是唯一的手段?

请提供任何有用的链接,因为我对这个主题相对不熟悉。

4

2 回答 2

1

您可以为此使用 SQL Profiler,但您需要过滤结果。要监视 DELETE 语句,请选择“RPC:Starting”和“SP:Starting”事件并在 TextData 列上应用过滤器:“TextData LIKE '%DELETE%FROM%'”。

-Edoode

于 2009-02-19T11:28:19.050 回答
1

使用 profiler 找到罪魁祸首就像大海捞针,尤其是在繁忙的系统上;如果您无法使用 edosoft 建议的过滤器找到它,请尝试通过消除 writes=0 的语句、按应用程序名称过滤、按文本数据过滤而不是 '%select%' 来最小化噪音;你应该能够缩小范围。

如果你真的很绝望,你可以拒绝对桌子上所有用户的删除权限,然后等待电话响起。

您还可以偶尔在表上运行 SELECT COUNT(*) 到带有时间戳的工作表中,并尝试将记录计数的任何下降与其他活动相关联。

于 2009-02-19T13:30:56.620 回答