开启SQLServer代理。
对数据库启用CDC数据库级别功能。
检查是否开启:
USE dbname;
GO
EXECUTE sys.sp_cdc_enable_table
@source_schema = N'dbo'
, @source_name = N'dept'
, @role_name = N'cdc_Admin'--可以自动创建
, @capture_instance=DEFAULT
GO
SELECT name ,
is_tracked_by_cdc ,
CASE WHEN is_tracked_by_cdc = 0 THEN 'CDC功能禁用'
ELSE 'CDC功能启用'
END 描述
FROM sys.tables
WHERE OBJECT_ID IN( OBJECT_ID('dbo.dept')
)
对于__$operation列:1 = 删除、2= 插入、3= 更新(旧值)、4= 更新(新值)
对于__$start_lsn列:由于更改是来源与数据库的事务日志,所以这里会保存其事务日志的开始序列号(LSN)
EXECUTE sys.sp_cdc_help_change_data_capture;
GO
USE Sales;
GO
cdc.fn_cdc_get_all_changes_<捕获实例>用法:
DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn =
sys.fn_cdc_get_min_lsn('dbo_dept')
SET @to_lsn = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_all_changes_dbo_dept
(@from_lsn, @to_lsn, N'all');
GO