数据管道中SQL Server DDL操作说明

  • 产品级协助
  • 文档创建者:Wendy123456
  • 历史版本:1
  • 最近更新:Wendy123456 于 2025-03-17
  • 1. 概述

    SQL Server 数据源作为管道任务来源端时,目前 DDL 同步功能 不支持自动同步源端新增字段,若需要使用 DDL 进行新增字段的处理,请参见本文提供的方案。

    2. 方案一:在线方案

    注:此方案如果源表在不停写入数据,源表新增字段之后,没有立刻创建新的 CDC 实例,那么在源表新增字段之后到新的 CDC 实例创建前的这段时间中,源表发生的数据修改是不会写入到新的 CDC 实例中的。这可能会导致部分数据丢失新增字段的数据,如果要完全避免这种情况,请采用离线处理方案。

    1)源表执行 DDL,新增一个字段。

    1742176192494540.png

    2)给源表新建一个 Capture Instance

    使用命令:

    EXEC sys.sp_cdc_enable_table
         @source_schema = N'Schema',
         @source_name = N'Table',
         @role_name = NULL, -- 如果要限制读取角色,可能需要设置
         @capture_instance = N'Schema_Table_newname'; -- 给一个新的名字

    注:Table 是数据表的名称(没有 schema)。

    3)等待 FineDataLink 检测到新的 Capture Instance 创建后,自动切换到新的 Capture Instance

    即可看到目标表中已经同步新增的字段,如下图所示:

    3.png

    4)可以手动把旧的 Capture Instance 删除。

    检查 change_tables 中旧的 Capture Instance 名称:

    USE database;
    GO

    EXECUTE sys.sp_cdc_help_change_data_capture;
    GO

    然后禁用该 Capture Instance ,示例命令:

    -- Disable a Capture Instance for a table
        EXEC sys.sp_cdc_disable_table
        @source_schema = N'Schema',
        @source_name   = N'Table',
        @capture_instance = N'Schema_Table'

    注:Table 是数据表的名称(没有 schema );Schema_Table 为需要删除的旧 Capture Instance 。

    然后使用如下命令检查 change_tables 里是否有这条记录,若没有则表示已经被删除,若有的话需要手动使用 SQL 命令删除。

    USE database;
    GO

    EXECUTE sys.sp_cdc_help_change_data_capture;
    GO

    3. 方案二:离线处理方案

    1)源表停止写入,等待 FineDataLink 同步完源表所有的数据。

    2)停止管道任务。

    3)源表执行 DDL,新增一个字段:

    1742176322517298.png

    4)给源表新建一个 Capture Instance

    使用命令:

    EXEC sys.sp_cdc_enable_table
         @source_schema = N'Schema',
         @source_name = N'Table',
         @role_name = NULL, -- 如果要限制读取角色,可能需要设置
         @capture_instance = N'Schema_Table_newname'; -- 给一个新的名字

    5)恢复源表写入。

    6)启动管道任务。

    7)等待 FineDataLink 检测到新的 Capture Instance 创建后,自动切换到新的 Capture Instance

    即可看到目标表中已经同步新增的字段,如下图所示:

    6.png

    8)可以手动删除旧的 Capture Instance。

    注:如果没有按照正确顺序操作,可能造成部分有新字段的数据流入了旧的 CDC 实例,那么这部分新字段的数据就丢失了。




    附件列表


    主题: 配置数据源
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持

    反馈已提交

    网络繁忙