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

如何通过Azure Data Factory将Blob存储的.bak文件恢复至Azure SQL数据库

核心结论

直接从Azure Blob存储的SQL Server .bak文件恢复到**Azure SQL数据库(单数据库/弹性池)**目前仍然不可行。原因很明确:Azure SQL数据库不支持直接还原传统SQL Server的.bak备份文件,它仅兼容自身的备份格式(比如Azure SQL自动生成的备份、导出的bacpac文件)。

同技术栈替代方案

基于你现有ADF+Blob+Azure SQL的技术栈,且只能用.bak文件的前提,推荐以下几种中转方案:

方案1:用Azure VM上的SQL Server做中转

  • 借助ADF把Blob里的.bak文件复制到Azure VM的本地磁盘或附加的数据磁盘上
  • 在VM上部署和源SQL Server版本兼容的SQL Server(最好同版本或更高,避免还原报错)
  • 先把.bak还原到VM上的SQL实例,再同步到目标Azure SQL数据库,可选方式:
    • 用ADF的「SQL Server到Azure SQL数据库」复制活动,每日做全量或增量同步
    • 给VM上的SQL Server开事务复制,直接把数据同步到Azure SQL数据库
    • 通过SSMS或sqlpackage.exe命令把中转库导出成bacpac文件,再导入到Azure SQL,适合每日全量更新的场景

方案2:用Azure SQL托管实例做中转

  • 把Blob存储的.bak文件直接恢复到同一资源组的Azure SQL托管实例(托管实例支持还原传统SQL Server的.bak,需提前把Blob配置成托管实例的备份存储)
  • 从托管实例同步数据到目标Azure SQL数据库,可选方式:
    • 用ADF复制活动迁移数据
    • 给Azure SQL数据库开弹性查询,直接从托管实例读数据写入目标库
    • 配置事务复制,从托管实例同步到Azure SQL数据库

方案3:ADF+自动化脚本组合

  • 在ADF里加自定义活动,调用Azure Functions或Azure自动化账户的Runbook:
    • 脚本先把Blob里的.bak下载到临时存储(比如Azure Files共享)
    • 用sqlcmd或PowerShell命令把.bak还原到中转SQL Server(VM或托管实例)
    • 再执行预设的同步逻辑把数据导到Azure SQL数据库
关键注意点
  • 中转用的SQL Server版本必须和生成.bak的源SQL Server版本兼容,不然还原会失败
  • 如果源端是增量备份,得按顺序先还原全量备份,再依次还原增量备份到中转实例,之后再同步
  • 成本方面:VM或托管实例会产生额外费用,可以选按需实例,或者非工作时间关停VM来省钱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 18:50:01