SuperAPI AI 工具集

azuresql-db-import

数据与分析

查看项目

更新于 10-16 06:47

技能介绍

用途:把已有数据库导入本地运行的 Azure SQL Database 容器(Private Preview)。镜像为 sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest,非 x64 主机需加 --platform linux/amd64;该镜像是 Azure SQL Database 引擎(EngineEdition 5,Edition 为 SQL Azure),不是 mcr.microsoft.com/mssql/server SQL Server 镜像。

主要能力:用 SqlPackage 从 .bacpac 导入架构与数据,或用 .dacpac 仅发布架构。导入前必须在 master 连接上先 CREATE DATABASE appdb,目标库须已存在且为空。

用法:启动容器并在重试循环中创建目标库,例如容器内执行 /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$MSSQL_SA_PASSWORD" -C -b -Q "IF DB_ID('appdb') IS NULL CREATE DATABASE appdb;"。随后对外部运行 SqlPackage /Action:Import /SourceFile:"./mydatabase.bacpac" /TargetConnectionString:"Server=localhost,$HOST_PORT;Database=appdb;User Id=sa;Password=$MSSQL_SA_PASSWORD;TrustServerCertificate=true";仅架构用 /Action:Publish。最后校验 SELECT SERVERPROPERTY('EngineEdition') 应为 5,并抽查表与行数。

适用场景:需要在本地获得与云端 Azure SQL Database 行为一致的引擎,用于导入并验证已有数据库。

限制:无 RESTORE 路径,BACKUP/RESTORE 在任意会话均被拒绝(Msg 40510),.bak 不可用;用户库会话中 USE 返回 Msg 40508,须在连接串中指定目标库(Database=appdb 或 -d appdb);不自动创建数据库;不遵循 /docker-entrypoint-initdb.d 自动初始化;跨库三部分名称、SQL Agent、服务器级对象、部分 CLR 与文件组设置等 PaaS 不支持的项会在导入时失败或被跳过,需读 SqlPackage 输出确认。SqlPackage 不在镜像内,需在宿主机安装或参考 references/sqlpackage-import.md 的容器回退方案。未提供收费与价格信息。