0

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

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

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

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

4

2 回答 2

0

确保日志不会被重用:

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

然后:

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

所有的写操作都会出现在日志中。从物理操作(分配单元 ID)可以得到逻辑操作(对象 ID)。

话虽如此,如果您打算直接在数据库级别与其交互,您可能应该对第 3 方模式和数据模型有一个不错的了解。如果您计划更新 3rd 方工具,并且您甚至不知道要更新哪些表,那么您很可能最终会损坏其数据。

于 2009-12-11T18:22:17.020 回答
0

我可以想到以下方法可以跟踪更改

  1. 运行SQL Server Profiler,它将捕获服务器上运行的所有查询。您可以按数据库、模式或一组表等过滤这些。
  2. 使用第 3 方交易日志阅读器。这是一个侵入性较小的过程。您必须确保在数据库上设置为完全恢复。
于 2009-12-11T18:23:13.883 回答