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

如何在Azure Data Factory中读取.bak文件并迁移数据至Azure SQL数据库

ADF迁移存储账户.bak文件到Azure SQL数据库的可行方案

ADF本身确实不支持直接解析.bak格式的SQL Server备份文件,但可以通过ADF编排其他Azure服务的能力完成端到端的迁移流程,常见的可行方案如下:

方案1:搭配Azure SQL原生还原能力(最轻量化方案)

该方案无需引入额外服务,仅靠ADF的编排能力+Azure SQL的原生还原功能即可实现,适合绝大多数常规场景:

  • 提前配置权限:给Azure SQL的服务主体授予存储账户的存储Blob数据读取者权限,或者提前在Azure SQL中创建指向存储账户的SAS凭据
  • 在ADF中配置存储事件触发器或定时触发器,监测存储账户中.bak文件的上传完成事件
  • 在ADF管道中添加Azure SQL 执行脚本活动,执行从URL还原备份的SQL命令,参考代码如下:
RESTORE DATABASE [目标数据库名称]
FROM URL = 'https://<存储账户名>.blob.core.windows.net/<容器名>/<备份文件名>.bak'
WITH 
    CREDENTIAL = 'https://<存储账户名>.blob.core.windows.net/<容器名>',
    MOVE '备份文件中的逻辑数据文件名' TO '目标数据文件路径',
    MOVE '备份文件中的逻辑日志文件名' TO '目标日志文件路径',
    REPLACE -- 若需要覆盖目标端已有数据库可添加该参数

提示:该方案对Azure SQL托管实例兼容性最好,Azure SQL单库/弹性池仅支持还原兼容版本的.bak文件。

方案2:搭配Azure自动化/临时虚拟机实现(适配复杂场景)

如果遇到.bak版本不兼容、需要提前做备份文件清洗、校验等预处理操作,可以选择该方案:

  • 提前在Azure自动化账户中创建PowerShell Runbook,或者准备预装了sqlcmd、bcp等SQL Server工具的临时虚拟机镜像
  • 编写处理脚本逻辑:从存储账户拉取.bak文件到本地磁盘,还原到临时SQL实例,校验数据后将需要迁移的表/数据同步到目标Azure SQL数据库
  • 在ADF管道中添加Web活动或Azure自动化活动,触发对应的Runbook/脚本执行,同步等待执行结果后继续后续数据处理流程
  • 该方案适配性极强,几乎可以覆盖所有特殊备份文件的迁移需求。

方案3:使用ADF自定义活动实现(适配自托管IR场景)

如果你已经在使用自托管集成运行时(SHIR),可以直接将迁移逻辑封装为ADF自定义活动,完全融入ADF的调度监控体系:

  • 开发.NET/Python自定义脚本,实现.bak文件的拉取、还原、数据同步全逻辑
  • 将脚本打包后上传到指定存储账户,在ADF管道中添加自定义活动,指定SHIR节点运行该脚本
  • 该方案不需要额外管理其他服务的调度逻辑,所有流程都可以在ADF控制台统一监控、排错。

注意:如果.bak文件的SQL Server版本过低,无法直接还原到Azure SQL,建议先将备份文件升级到兼容版本,或者提前导出为bacpac格式后再执行迁移。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 03:15:00