在Apple Mac M1 Azure Sql Edge的Docker中Restore MSSQL Bak
想從一些舊的Sql Server的Bak檔案來備份與還原DB是再自然不過的事了,但殊不知,目前試著在Parallel Desktop上的Windows 上裝 Sql Server還是有遇到Apple Silicon晶片相容的問題,所以只好寄望看看Mac下的Docker版本的Sql Edge有沒有機會可以載入Bak。
剛好找到一片影片教學(在最後的reference)
在此再記錄一下 這個簡單的步驟,先在Docker建立 mcr.microsoft.com/azure-sql-edge的容器
docker run \
--name "/azuresqledge" \
--runtime "runc" \
--log-driver "json-file" \
--restart "no" \
--cap-add "SYS_PTRACE" \
--publish "0.0.0.0:1433:1433/tcp" \
--network "bridge" \
--hostname "ce6067cab6e1" \
--expose "1401/tcp" \
--expose "1433/tcp" \
--env "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \
--env "MSSQL_RPC_PORT=135" \
--env "CONFIG_EDGE_BUILD=1" \
--env "PAL_BOOT_WITH_MINIMAL_CONFIG=1" \
--env "PAL_ENABLE_PAGE_ALIGNED_PE_FILE_CREATION=1" \
--env "LD_LIBRARY_PATH=/opt/mssql/lib" \
--env "ACCEPT_EULA=1" \
--env "MSSQL_SA_PASSWORD=自訂密碼" \
--label "com.azure.dev.image.build.sourceversion"="ce89b6c967e193696164e69929c3341c38ba9c7e" \
--label "com.azure.dev.image.system.teamfoundationcollectionuri"="https://dev.azure.com/tigerdid/" \
--label "com.microsoft.product"="Microsoft SQL Server" \
--label "com.microsoft.version"="15.0.2000.155916" \
--label "org.opencontainers.image.ref.name"="ubuntu" \
--label "org.opencontainers.image.version"="18.04" \
--label "vendor"="Microsoft" \
--detach \
--entrypoint "/opt/mssql/bin/permissions_check.sh" \
"mcr.microsoft.com/azure-sql-edge" \
"/bin/sh" "-c" "/opt/mssql/bin/launchpadd -usens=false -enableOutboundAccess=true -usesameuser=true -sqlGroup root -- -reparentOrphanedDescendants=true -useDefaultLaunchers=false & /app/asdepackage/AsdePackage & /opt/mssql/bin/sqlservr"
測試一下使用Mac上強大的Azure Data Studio,可以連線進去
接著建立目錄並copy檔案
docker exec -it azuresqledge mkdir /var/opt/mssql/backup
docker cp '/Users/paul_huang/Downloads/ExampleDB.bak' azuresqledge:/var/opt/mssql/backup
成功的話會像這樣
Successfully copied 202MB to azuresqledge:/var/opt/mssql/backup
Azure Data Studio跟Visual Studio Code一樣,可以找延伸模組來安裝,彈性還不錯
像 Profiler, Schema Compare,都可以再外掛進來
接著到 localhost的HOME目錄,可以找的到 “Restore”
選擇一下剛剛用Docker複製進去的檔案
剩下的匯入流程就沒啥問題,Docker的Azure Sql Edge確實也可以還原bak檔!
跨平台,讚啦,Mac無極限~
Reference Video