CDC已启用,但未填充cdc.dbo <table-name> _CT表

Foo*_*Bar 4 sql-server cdc change-data-capture

我已使用以下步骤启用了CDC:

exec sys.sp_cdc_enable_db;

exec sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'table_name',
@role_name = N'CDC_Access',
@supports_net_changes = 1;
Run Code Online (Sandbox Code Playgroud)

我可以看到在系统表中创建了一个CT ; SQL Server代理已启用,我可以看到cdc.db_name_capture作业已创建并正在运行.

但是,即使正在填充table_name表,我也从未在CT表中看到任何内容.我在其他正在更新的数据库中为其启用了CDC的表,并且CDC 正在为它们捕获数据并将其存储在为该特定表创建的CT表中.

为什么这个表不能捕获数据,即使其他表是?

我在网上看到它可能与事务日志变得太大有关,但我仍然有足够的驱动器空间(~2TB免费).

我该怎么做来调试这个问题?

非常感谢你,提前!:)

编辑1

这是输出exec sys.sp_cdc_help_change_data_capture. subscription_events是我遇到麻烦的表.

在此输入图像描述

编辑2

这是输出exec sys.sp_cdc_help_jobs;.

在此输入图像描述

编辑3

这是输出select * from sys.dm_cdc_log_scan_sessions;.

在此输入图像描述

这是输出 select * from sys.dm_cdc_errors;

在此输入图像描述

编辑4

Running select serverproperty('productversion')提供以下版本号:11.0.3401.0.

End*_*rju 9

请执行下列操作:

  1. 停止捕获作业;
  2. EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1; EXEC sp_replflush;
  3. 关闭执行这些命令的查询窗口;
  4. 开始捕获作业;
  5. 检查sys.dm_cdc_errors表中的新行,并检查更改是否开始可见.