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

时间:2014-05-19 17:49:19

标签: 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;

我可以看到在系统表中创建了一个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 是我遇到麻烦的表。

enter image description here

编辑2

以下是exec sys.sp_cdc_help_jobs;的输出。

enter image description here

编辑3

以下是select * from sys.dm_cdc_log_scan_sessions;的输出。

enter image description here

以下是select * from sys.dm_cdc_errors;

的输出

enter image description here

编辑4

正在运行select serverproperty('productversion')会提供以下版本号:11.0.3401.0

1 个答案:

答案 0 :(得分:8)

执行以下操作:

  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表中的新行,并检查更改是否开始可见。