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

求助:如何将SQL .bacpac文件导入Azure SQL Edge Docker容器

解决Azure SQL Edge容器导入.bacpac文件的可行方案

针对Azure SQL Edge不支持contained database authentication的限制,以下是几种可行的导入方案:

方案1:调整sqlpackage导入参数直接导入

Azure SQL Edge不支持包含数据库,导入时需显式禁用包含数据库创建,同时修正命令中的路径和连接细节:

  1. 确保使用最新版sqlpackage(建议直接在主机上运行,避免容器内安装的繁琐,或使用容器内匹配版本的工具)
  2. 复制bacpac到容器(路径需正确):
    docker cp ./bpCustomer.bacpac azuresqledge:/home/mssql/backpack/mydatabase.bacpac
    
  3. 执行导入命令(注意绝对路径、端口及禁用包含数据库参数):
    sqlpackage /Action:Import /tsn:localhost,1433 /tdn:target_db_name /tu:sa /tp:mypassword /sf:/home/mssql/backpack/mydatabase.bacpac /ttsc:true /p:CreateContainedDatabase=false
    
    关键说明:
    • /tsn需指定端口(默认1433,若容器映射了其他端口则替换)
    • /sf必须使用容器内的绝对路径
    • /p:CreateContainedDatabase=false强制不创建包含数据库,规避Azure SQL Edge的特性限制

方案2:将bacpac转换为SQL脚本后导入

若直接导入仍有问题,可先将bacpac转为SQL脚本,移除包含数据库相关语句后执行:

  1. 生成导入脚本(主机执行,无需复制bacpac到容器):
    sqlpackage /Action:Script /sf:./bpCustomer.bacpac /tdn:target_db_name /tu:sa /tp:mypassword /tsn:localhost,1433 /ttsc:true /p:ScriptCreateContainedDatabase=false /o:./import_script.sql
    
  2. 编辑生成的import_script.sql:
    • 删除所有涉及CONTAINED DATABASE的配置语句
    • 若脚本中有创建包含用户的语句,替换为普通SQL登录映射(例如将CREATE USER [user] WITH CONTAINED改为CREATE USER [user] FOR LOGIN [login])
  3. 在Azure SQL Edge中执行修改后的脚本,完成数据库对象创建

方案3:使用Azure Data Studio图形化导入

通过图形化工具简化操作,自动处理包含数据库限制:

  1. 打开Azure Data Studio,连接到Azure SQL Edge容器(服务器地址为localhost:映射端口,用户名sa,密码为容器SA密码)
  2. 右键点击目标服务器,选择导入数据层应用程序
  3. 选择本地的.bacpac文件(无需复制到容器)
  4. 在导入向导的高级设置中,勾选不创建包含数据库,完成导入流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:43:26