2009-12-11 24 views
0

我一直负责使用其他第三方产品来连接我们的产品。我需要做的一件事就是在添加新的“项目”时模仿第三方的一些产品功能 - 这可以触及多个数据库表。有没有办法将某种全局钩子添加到数据库中,以记录对数据所做的所有更改?是否有一种简单的方法来跟踪SQL 2005数据库中的所有更改

我想添加挂钩,使用第三方应用程序创建一个项目,然后检查所有表受到影响。

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

感谢所有帮助 〜普雷斯科特

回答

0

我能想到的下面的方式您可以跟踪更改

  1. 运行SQL Server事件探查将捕获的服务器上运行的所有查询。您可以通过数据库,模式或一组表格等过滤这些数据。
  2. 使用第三方事务日志读取器。这是一个不太干扰的过程。您必须确保您已设置为数据库的完全恢复。
0

确保日志不会被重复使用:

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

Then:

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

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

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

相关问题