更新时间:2025-04-25 GMT+08:00
分享

变更数据捕获(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:表示关闭状态。

相关文档