Sql server CDC已启用,但CDC.dbo<;表名>_未填充CT表
我已通过以下步骤启用CDC:Sql server CDC已启用,但CDC.dbo<;表名>_未填充CT表,sql-server,cdc,change-data-capture,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\u name\u cap
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\u name\u capture作业
但是,即使正在填充表\u name表,我也从未在CT表中看到任何内容。在同一个数据库中,我还有其他表启用了CDC,这些表正在更新,CDC正在为它们捕获数据并将其存储在为特定表创建的CT表中
为什么这一个表不能捕获数据,即使其他表也不能捕获数据
我在网上读到,也许这与事务日志变得太大有关,但我仍然有足够的驱动器空间(~2TB可用空间)
如何调试此问题
提前非常感谢您!:)
编辑1
这是exec sys.sp\u cdc\u help\u change\u data\u capture的输出subscription\u events是我遇到问题的表
编辑2
以下是exec sys.sp\u cdc\u help\u作业的输出代码>
编辑3
下面是sys.dm\u cdc\u log\u scan\u会话中的select*的输出代码>
这是sys.dm\u cdc\u errors中的select*的输出代码>
编辑4
运行select serverproperty('productversion')
提供以下版本号:11.0.3401.0
执行以下操作:
停止捕获作业李>
运行EXEC sp_repldone@xactid=NULL、@xact_segno=NULL、@numtrans=0、@time=0、@reset=1;执行sp_replush代码>
关闭执行这些命令的查询窗口李>
启动捕获作业李>
检查sys.dm_cdc_errors表中的新行,并检查更改是否开始可见
您是否检查了系统的输出。sp\U cdc\U帮助\U更改\U数据\U捕获
?没事吧?我想没事。我运行了exec sys.sp\u cdc\u change\u data\u capture
,在那里看到了我的新表,以及其他正常运行的表。我将添加该行的输出作为对我的问题的编辑。那么,确定此表中发生了更改吗?另外,默认捕获延迟为5秒,源表中的更改可能不会立即在CDC表中可见。但我想你在超过5秒的时间里检查了好几次。对吧?:-)是的,我看到subscription\u events表的大小在增长(通过转到Properties->Storage:)。我在周末将数据库保持在这种状态,CT表有0行,尽管周末插入了数千行。今天早上,我禁用了该表上的CDC,然后重新启用了它,但问题仍然存在。请尝试执行以下操作: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表中的新行,并检查更改是否开始可见。检查sys.dm_cdc_errors表发现我没有将文件与文件组关联。错误消息是“文件组‘CDC’没有分配给它的文件。在添加文件之前,无法在此文件组上填充表、索引、文本列、ntext列和图像列。”