重要提示:
Azure SQL Edge 不再支持 ARM64 平台,Azure SQL Edge 将于 2025 年 9 月 30 日停用
mcr.microsoft.com/azure-sql-edge latest 9d0e27694fc9 2 years ago 1.84GB。最近的更新包也是2023年7月更新的,只能测试学习,建议不要用于生产环境。
Microsoft Azure SQL Edge Developer (RTM) - 15.0.2000.1574 (ARM64) Jan 25 2023 10:36:08 Copyright (C) 2019 Microsoft Corporation Linux (Ubuntu 18.04.6 LTS aarch64) <ARM64>
微软就是坑王,想用sql server在linux系统中,还是需要Intel和AMD版本支持比较好。
步骤1:安装Docker
更新包索引并安装依赖:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
添加Docker的官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加Docker仓库:
echo "deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y
验证Docker安装:
1:方法1
#运行以下命令查看Docker版本:
docker --version
如果安装成功,终端会显示Docker的版本信息,例如:
Docker version 28.3.2, build 578ccf6
2:方法2 确保Docker服务正在运行。运行以下命令:
sudo systemctl status docker
如果服务正在运行,会看到类似以下的输出:

步骤2:配置SQL Server容器
▶ 创建数据持久化目录
mkdir ~/mssql_data
sudo chown -R 10001:0 ~/mssql_data # 关键权限设置
▶ 拉取ARM64专用镜像
docker pull mcr.microsoft.com/azure-sql-edge:latest # 官方ARM64兼容镜像
步骤3:启动SQL Server容器
下面在linux环境中执行时,最好要去除后面注解。
docker run \
--name sql-edge \
-e 'ACCEPT_EULA=Y' \ # 接受许可协议
-e 'MSSQL_SA_PASSWORD=test' \ # SA密码(需符合复杂度要求)
-e 'MSSQL_PID=Developer' \ # 免费开发版
-p 1433:1433 \ # 暴露默认端口
-v ~/mssql_data:/var/opt/mssql \ # 数据持久化
--restart unless-stopped \
-d mcr.microsoft.com/azure-sql-edge:latest
参数说明:
-
SA_PASSWORD:必须包含大写字母、数字和符号(长度≥8)
-
MSSQL_PID:可选 Developer (免费) 或 Premium (付费)
-
数据卷:将主机 ~/mssql_data 映射到容器目录
步骤4:验证部署
▶ 检查容器状态
docker ps -a --filter name=sql-edge
正常状态应为 Up
▶ 查看日志
出现 "SQL Server is now ready for client connections" 表示成功
步骤5:连接数据库
▶ 方式1:容器内连接(mcr.microsoft.com/azure-sql-edge:latest 是轻量级镜像,且默认不包含 sqlcmd 等客户端工具)所以下面的命令不能正常运行,只能使用外部连接方法或者本机安装sql-cmd工具
docker exec -it sql-edge /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P 'test'
▶ 方式2:外部工具连接
-
服务器地址:树莓派IP地址
-
端口:1433
-
认证:SQL Server认证
-
用户名:SA
-
密码:test
6:连接数据库出现的问题
docker exec -it sql-edge /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P 'test'
使用这个命令连接sql server提示报警如下

后面查阅资料应该是mcr.microsoft.com/azure-sql-edge:latest 是为arm64配套的,属于轻量内核,默认配置的sql server镜像不包含sql-cmd等工具
1. 镜像性质:轻量级设计
- 定位:Azure SQL Edge 是专为 IoT 和边缘计算场景优化的数据库镜像,核心目标是最小化资源占用(如存储、内存、CPU)。
- 对比完整版:与
mcr.microsoft.com/mssql/server(完整版 SQL Server)相比,Azure SQL Edge 移除了非必要组件(如完整版的管理工具、高级分析功能),仅保留核心数据库引擎。
- 官方说明:Microsoft 明确指出 Azure SQL Edge 不支持 ARM64 平台上的完整工具链(如
sqlcmd),进一步印证其轻量级设计。
2. 客户端工具缺失:sqlcmd 不存在
- 直接证据:用户尝试在容器内运行
sqlcmd 时,系统报错 executable file not found in $PATH,说明工具未安装。
- 官方文档:Microsoft Learn 明确提到:
- Azure SQL Edge 的 ARM64 版本不包含
sqlcmd。
- 即使通过
docker exec -it 进入容器,也无法直接使用 sqlcmd,需通过外部工具(如主机安装的 sqlcmd 或临时容器)连接。
- 镜像内容:Azure SQL Edge 镜像仅包含数据库服务(
/opt/mssql/bin/sqlservr),而 sqlcmd 属于 mssql-tools 包,需额外安装。
方案 1:主机安装 sqlcmd(推荐)
方案 2:使用Microsoft SQL Server Management Studio或者其它管理软件连接sql server数据库