M1 Mac SQL Server 环境配置
该文章写于 M1 芯片刚刚发布之时,部分内容距今已有较大变化,仅供参考。
这学期的数据库实验要用 SQL Server。但可惜 SQL Server 只能在 Windows 或者 x86_64 的 Linux 下才可以运行,所以又要折腾配置环境了!
TL; DR
1 2 |
|
尝试 1: Windows 虚拟机
使用 Paralles Desktop M1 预览版安装 Windows 10 on ARM,之后在虚拟机内尝试安装 Windows 版的 SQL Server。结果多次尝试,安装中均出现错误,还卸不掉。尝试 1 失败。
尝试 2: Docker 镜像
Docker M1 Mac 版下载:https://docs.docker.com/docker-for-mac/apple-m1/
由于 M1 的 Docker 可以通过 QEMU 模拟 x86_64 的 Linux,因此去 Docker Hub 搜了一下 SQL Server。但是一看评论区,一堆人说不能在 M1 上跑这个,因此果断放弃。
尝试 2 失败。
尝试 3: Azure SQL Edge
根据这篇教程,这里使用的是 Azure SQL Edge 镜像。因此按照它的步骤尝试了一下。拉取并运行:
1 2 |
|
这里的 MSSQL_SA_PASSWORD 需要是强密码,否则容器无法成功运行
但是由于 Mac 上没有 SQL Server Management Studio,因此这里用Azure Data Studio替代,虽然没有出 M1 的原生版本,但是通过转译可以正常使用。
打开 Azure Data Studio,在新建连接的选项中,设置如下,其中密码为之前设置的强密码:
成功连接后,就可以点击上方的 New Query 进行查询:
导入 MDF 和 LDF 文件
由于这学期的数据库实验,还给了 MDF 和 LDF 这两个数据库文件,需要要将其导入到这个 SQL Server 容器里面。通过微软的这篇文档,发现可以通过 SQL 语句,以文件的形式导入。
因此,首先要通过docker cp
将本地的文件复制到容器中。复制之前需要将权限改为其他人可读可写,否则由于docker cp
复制时的文件所有者设置的原因,SQL Server 容器中的 mssql 用户无法读取这两个文件。
实验提供的是School_Data.MDF
和School_Log.LDF
,以此为例:
1 2 3 |
|
之后回到 Azure Data Studio,在 New Query 中输入并执行:
1 2 3 4 |
|
成功导入!