【问题标题】:Missing CDC capture Job when enabling CDC on table in SQL Server在 SQL Server 中的表上启用 CDC 时缺少 CDC 捕获作业
【发布时间】:2016-12-02 23:29:01
【问题描述】:

我的数据库启用了 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 作业。

我该如何解决?

【问题讨论】:

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


    【解决方案1】:

    我不知道捕获作业发生了什么(SQL 代理作业通常不会丢失),但您可以通过以下方式找回它。

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

    需要注意的一点是,CDC 捕获代理和复制日志读取器代理是同一个东西。字面上地。因此,如果有人最近将复制添加到您的数据库,您的捕获作业可能已被复制日志读取器作业取代。您可以通过sys.dm_cdc_log_scan_sessions 视图查看发生了哪些 cdc 日志扫描会话。

    【讨论】:

    • Replicate 和 CDC 似乎不能一起工作,我已经尝试删除复制,然后启用 cdc,cdc 工作正常。但是现在当重新添加复制时,复制不起作用:((。我现在该怎么办?
    • “CDC 不工作”是什么意思?如果您的指标是 CDC 工作不存在,那不是要考虑的事情。确保 sys.dm_cdc_log_scan_sessions 显示最近的内容并且应该足够好。
    • CDC 不工作意味着没有行跟踪添加到 cdc 表中,并且在检查代理作业时,我看到缺少捕获作业。 Adoupt 复制是我删除所有订阅和发布的问题,然后再次运行脚本启用 cdc,cdc 工作,创建作业捕获并跟踪插入 cdc 表的行。但是当创建发布和订阅返回时,复制失败:(,我已经禁用所有复制配置删除所有分布式数据库并重新创建复制配置和发布和订阅现在所有 cdc 和复制工作正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    相关资源
    最近更新 更多