在SQL Server中的表上启用CDC时缺少CDC捕获作业

时间:2016-12-01 23:52:59

标签: sql-server sql-server-2008 cdc

我的数据库启用了CDC,并且在几个表上运行正常。有一天(不知道为什么)它停止工作:没有记录新的变化。

然后我继续按如下方式禁用CDC:

exec sys.sp_cdc_disable_db

然后我按如下方式重新启用它:

exec sys.sp_cdc_enable_db

GO

EXEC sys.sp_cdc_enable_table  
    @source_schema = N'dbo'  
  , @source_name = N'resource'  
  , @role_name = NULL  
  , @capture_instance = N'dbo_resource'   
  , @supports_net_changes = 1     
  , @captured_column_list = N'Id,Name,Status'    
GO 

这些命令运行良好,但它并没有解决我的问题。

我已经检查并看到CDC所需的所有表都已创建,但是浏览代理作业我看到只创建了CLEANUP作业,但缺少CAPTURE作业。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

我不知道捕获作业发生了什么(SQL代理作业通常不会丢失),但是这里有你如何取回它。

EXEC sys.sp_cdc_add_job @job_type = N'capture';
GO

需要注意的一点是,CDC捕获代理和复制日志读取器代理是相同的。从字面上看。因此,如果最近有人向您的数据库添加了复制,则您的捕获作业可能已被复制日志读取器作业替换。您可以通过sys.dm_cdc_log_scan_sessions视图查看正在进行的cdc日志扫描会话。

相关问题