关于变更数据捕获

变更数据捕获,以下为官网详细的介绍

https://docs.microsoft.com/zh-cn/sql/relational-databases/track-changes/about-change-data-capture-sql-server?view=sql-server-2017

下面收集重要的语法

--对数据库启用cdc
EXEC sys.sp_cdc_enable_db  
GO  
--对数据库禁用cdc
EXEC sys.sp_cdc_disable_db  
GO  
--对表启用cdc(无访问控制角色)
--supports_net_changes 持净更改查询,源表必须具有用于唯一标识行的主键或唯一索引
EXEC sys.sp_cdc_enable_table  
@source_schema = N'dbo',  
@source_name   = N'MyTable',  
@role_name     = NULL,  
@supports_net_changes = 1  
GO  
--对表启用cdc(有访问控制角色)
EXEC sys.sp_cdc_enable_table  
@source_schema = N'dbo',  
@source_name   = N'MyTable',  
@role_name     = N'MyRole',  
@supports_net_changes = 1  
GO  
--对表禁用cdc
EXEC sys.sp_cdc_disable_table  
@source_schema = N'dbo',  
@source_name   = N'MyTable',  
@capture_instance = N'dbo_MyTable'  
GO  

使用效果:

dbo_表名_CT中存储变更的明细数据;

注意事项:

1、此功能依赖于sql server代理服务,需要启动该服务才生效

2、对表启动cdc之后,对表进行truncate操作将报错:

无法截断表 'XXX',因为该表已为复制发布或者已启用了变更数据捕获。

 

 

 

 

 

你可能感兴趣的:(MSSQL,study)