You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure Data Factory捕获SQL Server CDC表净变更时遇对象不存在错误

问题解决:CDC净变更函数对象不存在错误(错误208)

可能原因及修复步骤

  • 检查CDC捕获实例命名
    先确认dbo.CUST表对应的CDC捕获实例名称是否为dbo_CUST,执行以下查询验证:

    SELECT capture_instance FROM cdc.change_tables WHERE source_object_id = OBJECT_ID('dbo.CUST');
    

    如果捕获实例是自定义名称,需将函数名中的dbo_CUST替换为实际捕获实例名(函数格式为cdc.fn_cdc_get_net_changes_<捕获实例名>)。

  • 确认净变更捕获是否启用
    只有启用CDC时指定@supports_net_changes = 1,才会生成fn_cdc_get_net_changes_*函数。执行查询检查:

    SELECT supports_net_changes FROM cdc.change_tables WHERE source_object_id = OBJECT_ID('dbo.CUST');
    

    若返回值为0,需重新启用表的CDC并开启净变更支持:

    -- 先禁用现有CDC配置
    EXEC sys.sp_cdc_disable_table @source_schema = 'dbo', @source_name = 'CUST', @capture_instance = 'dbo_CUST';
    -- 重新启用并指定净变更支持
    EXEC sys.sp_cdc_enable_table 
        @source_schema = 'dbo', 
        @source_name = 'CUST', 
        @capture_instance = 'dbo_CUST',
        @supports_net_changes = 1,
        @role_name = NULL; -- 根据实际权限角色调整
    
  • 验证函数是否存在
    直接查询系统视图确认函数是否生成:

    SELECT name FROM sys.objects WHERE name LIKE 'fn_cdc_get_net_changes_dbo_CUST' AND type = 'FN';
    

    若无查询结果,说明函数未生成,按上述步骤重新配置CDC。

  • 检查执行权限
    确保执行查询的账号拥有cdc角色权限,或对cdc架构下对象有查询权限:

    EXEC sp_addrolemember 'cdc', '你的用户名';
    

内容的提问来源于stack exchange,提问作者Boris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 03:37:34