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
发布了130 篇原创文章 · 获赞 296 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/zlbdmm/article/details/104609290