2009-09-23 69 views
0

我的雇主开发了一个实用程序,它将逐行运行存储过程,并将每行的字段作为参数传递给存储过程。这对自动导入特别有用。在事务处理期间跟踪SQL Server中的更改

不过,我现在需要扩展,以提供一个交易,美化版版本,所以我们可以看到在运行实用程序提供什么样的变化都会对数据库汇总的潜在结果。这可能与“客户表中的3行插入”或“订单表中修改的5行”一样多。然后用户可以决定是否继续进行真正的导入。

我知道触发器可以设置在表上,但我不知道这是有可能在这种情况下,由存储过程引用的所有表不得而知。

是否有观看事务期间所做的更改任何其他方式,或者有没有人对我怎么能做到这一点任何其他建议?

非常感谢。

回答

0

编辑根据反馈和重新阅读的问题:

我在与莱姆斯同意数据没有严重的进口商希望目测检查数据,因为它被导入到系统中。

作为ETL作家,我希望做到这一点在我的暂存区,并运行验证我的数据之前,它被导入到实际生产地查询。

你也可以通过实现功能,“持有”的交易直至看到有人OK'ed得到与资源,死锁和盖帽的问题。

+0

疾病预防控制中心不会做他想要的。它会记录发生了什么但不提供回滚功能。如果你重读他的问题,仍然认为CDC是一个可能的解决方案,请多解释一下。 – 2009-09-23 18:47:37

+0

@RobGarrison:谢谢你指出。我错过了关于回滚部分的部分 - 只回答了INSPECT CHANGES部分。 – 2009-09-23 19:22:07

0

您快照当前LSN,运行YOUT“逐行”在交易过程中,然后用fn_dblog回读LSN后您快照日志。所做的更改是日志中记录了当前事务标识的记录。包装器事务可以回滚。当然,这只会在客户和5行订单中导入3行,没有严重的雇主会考虑在实际大小的导入工作上做这样的事情。想象一下,导入1 mil订单只是为了统计它们,然后回滚...

这将不适用于任何任意程序,尽管通常时间过程使自己的事务管理,并且它们不能按预期的方式调用时在包装交易。