Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server CDC已启用,但CDC.dbo<;表名>_未填充CT表_Sql Server_Cdc_Change Data Capture - Fatal编程技术网

Sql server CDC已启用,但CDC.dbo<;表名>_未填充CT表

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

我已通过以下步骤启用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 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列和图像列。”