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

能否将Azure SQL数据库复制到SQL Server?BACPAC导入失败求助

问题原因及解决方案

错误原因

BACPAC是数据层应用包格式,并非SQL Server原生备份文件(.bak),RESTORE DATABASE命令仅支持恢复SQL Server备份文件,无法处理BACPAC,这是报错的核心原因。

正确导入方式

方式1:使用SqlPackage工具(官方推荐,跨平台)

SqlPackage是微软官方提供的DACPAC/BACPAC处理工具,支持Windows、Linux、macOS,可直接处理Azure Blob Storage中的BACPAC文件。

执行以下命令(替换占位符为实际信息):

SqlPackage /Action:Import `
  /SourceFile:"https://<myblobaccount>.blob.core.windows.net/<container>/database_latest.bacpac" `
  /TargetConnectionString:"Server=<你的SQL Server实例地址>;Database=test1;User Id=<用户名>;Password=<密码>" `
  /StorageKey:"<你的SAS令牌>"

若SAS令牌已附加在Blob URL末尾(完整URL包含?<SAS-token>),可省略/StorageKey参数,直接在/SourceFile中使用带SAS的完整URL。

方式2:使用PowerShell SqlServer模块(适合自动化脚本)

如果在Azure Automation或PowerShell环境中执行,可通过SqlServer模块的Import-Dacpac命令完成导入:

# 导入SqlServer模块(未安装则先执行 Install-Module SqlServer -Force)
Import-Module SqlServer

# 配置参数
$bacpacFullUrl = "https://<myblobaccount>.blob.core.windows.net/<container>/database_latest.bacpac?<SAS-token>"
$targetConnStr = "Server=<你的SQL Server实例地址>;Database=test1;User Id=<用户名>;Password=<密码>"

# 执行导入
Import-Dacpac -DatabaseName test1 -ConnectionString $targetConnStr -SourceFile $bacpacFullUrl

注意事项

  • 版本兼容:目标SQL Server版本需与Azure SQL数据库的兼容级别匹配(例如Azure SQL用2022兼容级别,目标SQL Server至少为2022版本)。
  • 权限要求:目标SQL Server账号需具备CREATE DATABASE权限;Azure Blob Storage的SAS令牌需具备读取权限。
  • 网络连通:确保AKS集群内的SQL Server Pod能访问Azure Blob Storage,检查网络策略、NSG规则是否允许出站流量到Blob服务端点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:55:15