got*_*tqn 3 trigger sql-server t-sql change-data-capture sql-server-2016
我将创建由触发器填充的历史表(在插入、更新、删除之后)。由于只有 20% 的列要更新,我决定只记录更改的值 - 如果值没有更改,NULL则将在历史表中使用值。例如:
sparse与记录所有数据的普通实现相比,历史表列将节省大量空间(这是由于我的测试和我的业务案例)。
作为我的SQL Server 2016 SP1 standard edition支持者,Change Data Capture我想知道他们使用它和基于触发器的日志记录之间有什么优点/缺点/区别?
鉴于这两件事之间的选择,这就是我选择触发器的原因:
@Brent Ozar 列出了使用触发器的优点(这是好的和有效的点),但为了做出明智的决定,我想列出 CDC 的一些优点。
在一天结束时,我会说尝试在触发器和 CDC 上下文中运行一些边界情况,例如批量数据更改(更新/删除/插入),看看您是否有任何问题,例如性能、管理便利性等等,然后做最后的决定。