是否有一种简单的方法来跟踪SQL 2005数据库中的所有更改

时间:2009-12-11 17:58:20

标签: sql-server-2005 tracking

我的任务是使用其他第三方产品挂钩我们的产品。我需要做的一件事是在添加新的“项目”时模仿第三方的一些产品功能 - 这些项目可以触及多个数据库表。有没有办法在数据库中添加某种全局挂钩来记录对数据所做的所有更改?

我想添加钩子,使用第三方应用程序创建项目,然后查看所有表格受影响的内容。

我知道它不仅仅是新行,我遇到了许多计数字段,这些字段看起来会为新项目增加,我担心在新项目插入中可能会有其他记录被修改,而不只是添加新行。

感谢您的帮助 〜普雷斯科特

2 个答案:

答案 0 :(得分:0)

确保不会重复使用日志:

  • 数据库处于完全恢复模式(真正已满,具有初始备份)
  • 日志备份维护任务在测试期间暂停

然后:

  • 记下当前数据库LSN
  • 运行您的第三方项目创建
  • 使用select * from ::fn_log(oldcurrentLSN, NULL);
  • 检查新添加的日志信息

所有写入操作都将在日志中显示。从物理操作(分配单元ID),您可以进入逻辑操作(对象ID)。

现在要说的是,如果您打算直接在数据库级别与它进行交互,那么您应该对第三方架构和数据模型有一个正确的理解。如果您计划更新第三方工具,而您甚至不知道要更新哪些表,那么您很可能最终会破坏其数据。

答案 1 :(得分:0)

我可以考虑以下跟踪变化的方法

  1. 运行 SQL Server Profiler ,它将捕获服务器上运行的所有查询。您可以按数据库,模式或一组表等过滤这些内容。
  2. 使用第三方交易记录阅读器。这是一个不那么具有侵入性的过程。您必须确保在数据库上设置为完全恢复。