SQLServer通过开启cdc跟踪实现DML操作监控
1、查询那些数据库启用了cdc
USE master
GO
SELECT [name], database_id, is_cdc_enabled
FROM sys.databases
GO
2、对数据库启动cdc
use test
go
EXEC sys.sp_cdc_enable_db
go
3、查询启用cdc的表
use test
go
--查询启用cdc的表
SELECT [name], is_tracked_by_cdc
FROM sys.tables
GO
4、对表启用cdc,必须确保SQL Server Agent服务已启用
EXEC sys.sp_cdc_enable_table @source_schema = N'dbo', @source_name = N'userInfo', @role_name = NULL
GO
userInfo就是要启用cdc的表名,一旦对表开启cdc就会在数据库的系统表部分多出一个以cdc.开头的表,这个表中的数据反映的就是对原始表userInfo中增删改的数据日志。
5、对表禁用cdc
Exec sys.sp_cdc_disable_table @source_schema = N'dbo', @source_name = N'userInfo', @capture_instance = N'all'
6、对数据库禁用cdc
exec sys.sp_cdc_disable_db
7、查看跟踪作业信息
启用cdc以后会在SQL Server Agent中的作业计划中出现与cdc对应的作业计划。
exec sys.sp_cdc_help_jobs
--更改数据保留时间为分钟
EXECUTE sys.sp_cdc_change_job
@job_type = N'cleanup',
@retention=4320
GO
--停用作业
EXEC sys.sp_cdc_stop_job N'cleanup'
GO
--启用作业
EXEC sys.sp_cdc_start_job N'cleanup'
GO
--再次查看
EXEC sys.sp_cdc_help_jobs
GO