日期:2014-05-17  浏览次数:20728 次

如何记录sqlserver数据库中数据的变化?数据量大,任何方式都可
数据库较大,但是想在某一段时间内记录整个数据库的数据变化情况
请问有什么方法可以采用??
越高效越好

------解决方案--------------------
CDC,snapshot
------解决方案--------------------
1.  数据库审计、
2.  如果想监控DDL的变化可以建立DDL的触发器记录变化
3、 通过第三方产品,例如Lumigent的Log Explorer。
4、 数据库更新监控(Change data capture ,CDC)  通过对事务日志的异步读取,记录DML操作的发生时间、类型和实际影响的数据变化,然后将这些数据记录到启用CDC时自动建立的表中。通过cdc有关的存储流程,可以获取细致的数据变化情况。由于数据变化是异步读取的,因此对整体性能的影响不大,远小于通过Trigger实现的数据变化记录。http://www.hack59.com/edu/shujuku/mssql/2009093021185426.html
------解决方案--------------------
Change Tracking http://msdn.microsoft.com/zh-cn/library/bb933875.aspx
Database Snapshots http://msdn.microsoft.com/zh-cn/library/ms175158.aspx
------解决方案--------------------
高效的几乎没有,开trace,审计,snapshot都会很消耗资源。不过如果更新比较快比较多的话。snapshot应该会刚开始的时候消耗。等所有的页的某一条都修改一遍的时候开销就停止了。开始就相当于双倍或更多的IO开销。
------解决方案--------------------
Profiler or Trigger亦可