SQL Server 2008提供了内建的方法“”变更数据捕获“”(Change Data Capture 即CDC)以实现异步跟踪用户表的数据修改,而且这一功能拥有最小的性能开销。可以用于其他数据源的持续更新,例如将OLTP数据库中的数据变更迁移到数据仓库数据库。 --开启cdc EXEC sys.sp_cdc_enable_db --net_changes说的是针对一行记录,如果有多个更改的话,那么以最后的一条为准。 EXEC sys.sp_cdc_enable_table @source_schema='dbo',@source_name='frmuser',@capture_instance='frmuser',@supports_net_changes=0,@role_name=null --确认表已经被跟踪 SELECT is_tracked_by_cdc FROM sys.tables WHERE name = 'frmuser' and schema_id = SCHEMA_ID('dbo') EXEC sys.sp_cdc_help_change_data_capture 'dbo', 'frmuser' --更改表数据查询效果 UPDATE a SET a.isvalid = 0 FROM frmuser a WHERE Account ='sa' SELECT TOP 50 * FROM [cdc].[frmuser_CT] DECLARE @FromLSN varbinary(10) = sys.fn_cdc_map_time_to_lsn ( 'smallest greater than or equal' , '2013-09-27 08:30') DECLARE @ToLSN varbinary(10) = sys.fn_cdc_map_time_to_lsn ( 'largest less than or equal' , '2013-09-27 23:59:59') --注意若在上面的日期范围内无数据的话,将提示参数不足 SELECT CASE __$operation WHEN 1 THEN 'DELETE' WHEN 2 THEN 'INSERT' WHEN 3 THEN 'Before UPDATE' WHEN 4 THEN 'After UPDATE' END ,a.* FROM [cdc].[fn_cdc_get_all_changes_frmuser] (@FromLSN, @ToLSN, 'all') a --撤销CDC EXEC sys.sp_cdc_disable_table 'dbo', 'FactInternetSales','All' EXEC sys.sp_cdc_disable_db
更改是不会永远保存,会定期清除
【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。