变更数据捕获(CDC)
操作场景
使用存储过程对指定数据库开启或关闭变更数据捕获功能。变更数据捕获可记录应用到所启用的表中的插入、更新和删除活动,同时采用易于使用的关系格式提供变更详细信息。

仅RDS for SQL Server企业版和RDS for SQL Server 2016及其以上版本的标准版支持变更数据捕获。
关于变更数据捕获的其他功能可参考官方文档。
前提条件
- 成功连接RDS for SQL Server实例。关于连接华为云关系型数据库实例,请参考连接实例。
- 执行此存储过程的必须是拥有[CREATE ANY DATABASE]权限的用户。如果不具备此权限的用户尝试执行该存储过程,系统将会如下提示:
Database restores can only be performed by database logins with [CREATE ANY DATABASE] permissions.
约束
- 对于系统库,不可进行开启或关闭变更数据捕获功能。如果您试图对系统库进行此操作,系统将会如下提示:
CDC can not open on system database and [rdsadmin].
- 变更数据捕获功能操作仅包括 1,0,若尝试进行其他操作,系统将会如下提示:
@dbAction just support 1:open 0:close
操作步骤
- 开启或关闭库级CDC。
EXEC msdb.dbo.rds_cdc_db '@DBName', @DBAction;
- @DBName:指定要操作的数据库。
- @DBAction:指定操作类型,1为开启CDC,0为关闭CDC。
对“testDB_1”打开变更数据捕获,示例如下:
EXEC msdb.dbo.rds_cdc_db 'testDB_1', 1;
- 开启表级CDC。
EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 'testtable', @role_name = NULL
- @source_schema:schema名称。
- @source_name:表名。
- @role_name:用于限制对更改数据的访问权限,NULL为不限制。
- 关闭表级CDC。
EXEC sys.sp_cdc_disable_table @source_schema = 'dbo', @source_name = 'testtable', @capture_instance ='all'
- @source_schema:schema名称。
- @source_name:表名。
- @capture_instance:指定禁用捕获的实例名,all为全部禁用。
- 查看表级CDC是否开启。
use [testdb] SELECT is_tracked_by_cdc FROM sys.tables WHERE name='table_name'
- 查询结果为1:表示开启成功。
- 查询结果为0:表示关闭状态。