Skip to content

M1 上使用 MS SQL Server By Docker 續

如何在 PD 環境中使用 SSMS 連線至 Mac 中的 SQL Server 服務

如何確認 VM 連線到 Mac 的 IP
  • 在 terminal 輸入以下指令
ifconfig
  • 測試連線中 的 inet IP 即為 VM 連線 Mac 的 IP

如果你使用以下指令啟動 docker container

docker run -e "ACCEPT_EULA=1" -e "MSSQL_SA_PASSWORD=MyPass@word" -e "MSSQL_PID=Developer" -e "MSSQL_USER=SA" -p 1433:1433 -d --name=sql mcr.microsoft.com/mssql/server:2022-latest

將既有的 ldf, mdf 放入上方 container 裡面的 /var/opt/mssql/data/

  • use terminal.app
  • cd to your folder which contains ldf, mdf file
docker cp <your-database>.mdf sql:/var/opt/mssql/data/
docker cp <your-database>.ldf sql:/var/opt/mssql/data/

確認 container 中 /var/opt/mssql/data 中資料夾內 ldf, mdf 權限設定

docker exec -it -u root sql /bin/bash
chmod 640 Northwnd.ldf Northwnd.mdf
chown mssql:root /var/opt/mssql/data/Northwnd.ldf /var/opt/mssql/data/Northwnd.mdf
  • ctrl + c退出 bash

Attach Database through SSMS

sql
CREATE DATABASE YOURDBNAME
ON (FILENAME = '/var/opt/mssql/data/<file_name>.mdf'),
(FILENAME = '/var/opt/mssql/data/<file_name>.ldf')
FOR ATTACH;

如何查看當前開啟的 docker container

docker ps
CONTAINER ID   IMAGE                              COMMAND                   CREATED          STATUS          PORTS                              NAMES
<your_conainer_id>   mcr.microsoft.com/mssql/server:2022-latest  "/opt/mssql/bin/perm…"   29 minutes ago   Up 29 minutes   1401/tcp, 0.0.0.0:1433->1433/tcp   sql

如何停止特定的 container

docker stop <container_id>

如何查看所有的 container

docker container list -a

如何啟動既有的 container

docker start <container_id>

M1 上使用 MS SQL Server By Docker Compose

安裝 docker

資料夾結構

  • <自訂的資料夾名稱>
    • db-data(存放資料 mdf, ldf 檔案的資料夾,請先自己建立一個空的資料夾)
    • docker.compose.yml
    • README.md

新增名為 docker-compose.yml 的檔案,內容輸入以下

yml
version: '3'
services:
  sql-server:
    image: mcr.microsoft.com/mssql/server:2022-latest
    platform: linux/amd64
    ports:
      - "1433:1433"
    restart: always
    environment:
      ACCEPT_EULA: "Y"
      MSSQL_SA_PASSWORD: "MyPass@word"
      MSSQL_PID: "Developer"
      MSSQL_USER: "SA"
    volumes:
      - ./db-data:/var/opt/mssql/data

如何開啟資料庫的服務

  • 在 termainal 移到資料夾的目錄底下
cd <自訂的資料夾名稱>
  • 輸入以下指令,會執行 docker-compose.yml 底下的所有服務
docker compose up

如何關閉資料庫的服務

  • 在 termainal 移到資料夾的目錄底下
cd <自訂的資料夾名稱>
  • 輸入以下指令,會關閉 docker-compose.yml 底下的所有服務
docker compose down

如何匯入既有的 ldf, mdf 資料庫檔案

方法一

  • 直接將既有資料庫 ldf, mdf 檔案放在 <自訂的資料夾名稱> 底下的 db-data

方法二

如何在 PD 環境中使用 SSMS 連線至 Mac 中的 SQL Server 服務

  • 伺服器類型:資料庫引擎
  • 伺服器名稱:10.211.55.2
  • 驗證:SQL Server 驗證
  • 登入:<參考 docker-compose.yml>
  • 密碼:<參考 docker-compose.yml>

確認資料夾內 ldf, mdf 權限設定

cd db-data
chmod 700 <file_name>.ldf
chmod 700 <file_name>.mdf

Attach Database through SSMS

sql
CREATE DATABASE YOURDBNAME
ON (FILENAME = '/var/opt/mssql/data/<file_name>.mdf'),
(FILENAME = '/var/opt/mssql/data/<file_name>.ldf')
FOR ATTACH;

其他開發用工具參考