我的数据库启用了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作业。
我该如何解决?
答案 0 :(得分:1)
我不知道捕获作业发生了什么(SQL代理作业通常不会丢失),但是这里有你如何取回它。
EXEC sys.sp_cdc_add_job @job_type = N'capture';
GO
需要注意的一点是,CDC捕获代理和复制日志读取器代理是相同的。从字面上看。因此,如果最近有人向您的数据库添加了复制,则您的捕获作业可能已被复制日志读取器作业替换。您可以通过sys.dm_cdc_log_scan_sessions
视图查看正在进行的cdc日志扫描会话。