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

如何使用Azure Data Factory替换Azure SQL Database中的数据

Azure Data Factory 全量覆盖同步Azure SQL Database解决方案

以下是三种可落地的全量替换配置方案,可根据你的场景选择:

方案1:使用复制活动内置预复制脚本(最简单快捷)

  • 打开你现有Blob同步到Azure SQL的管道编辑页,选中对应的复制活动
  • 切换到接收器配置标签页
  • 找到预复制脚本输入框,填入语句:TRUNCATE TABLE [你的目标表完整名称]

    若目标表存在外键约束无法执行TRUNCATE,可替换为DELETE FROM [你的目标表完整名称],TRUNCATE执行效率更高、几乎不占用事务日志空间,优先选择

  • 保存管道后重新触发运行即可,每次复制活动执行写入前会自动清空原有表数据,再写入本次的全量新数据,不会再产生追加重复数据

方案2:事务封装写入(适配需要数据高一致性的场景)

该方案可以避免清空表后写入失败导致目标表无数据的问题:

  • 首先在你的Azure SQL Database中创建存储过程,示例代码如下:
CREATE PROCEDURE FullDataReplace
AS
BEGIN
    SET NOCOUNT ON;
    BEGIN TRANSACTION
    -- 清空目标表旧数据
    TRUNCATE TABLE [目标表名];
    -- 从临时表写入新的全量数据
    INSERT INTO [目标表名] SELECT * FROM [同步临时表名];
    COMMIT TRANSACTION
END
  • 调整原有复制活动的写入目标为提前创建的临时表(结构和目标表完全一致)
  • 在复制活动后新增一个存储过程活动,关联上述创建的FullDataReplace存储过程
  • 每次管道运行时会先把新数据写入临时表,确认写入成功后再原子执行清空+替换操作,不会出现目标表空数据的中间状态

方案3:分区切换(适配超大数据量同步场景)

如果单表数据量超过100G,推荐用该方案实现毫秒级切换无 downtime:

  • 提前创建和目标表结构、索引完全一致的备用空表
  • 每次管道运行时把Blob的全量新数据写入备用表
  • 写入完成后执行切换语句:ALTER TABLE [备用表名] SWITCH TO [目标表名]
  • 最后清空备用表留作下次同步使用即可

紧急空间处理操作

你当前Azure SQL存储空间耗尽,可以先手动执行TRUNCATE TABLE [你的目标表名]清空之前重复追加的冗余数据,释放存储空间后再调整管道配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:27:03