- 取得連結
- 以電子郵件傳送
- 其他應用程式
此文章中會介紹在 Ubuntu 的 Docker 環境中啟用 Microsoft SQL Server on Linux 的映像檔並附加 AdvantureWork 範例資料庫。
文章環境
Ubuntu 作業系統
![ubuntu server version](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux/ubuntu-server-version.gif)
Docker 版本
![docker ce version](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux/docker-ce-version.gif)
取得 Microsoft SQL Server on Linux Image
安裝完成 Docker 後,先從官方 REPOSITORY 取得 Microsoft SQL Server on Linux Image。
![offical mssql server linux image in docker repository](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux/official-mssql-server-linux-image-page.gif)
描述中有提到要在 Docker 環境中執行 SQL Server on Linux 需要 3.25 GB 以上的記憶體,記憶體不夠的話就會無法執行(Container 執行起來後就會立刻關閉)。
執行時請確認使用者的權限
![docker pull in permission denied](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux/docker-pull-in-permission-denied.gif)
這裡使用 sudo -s 指令切換使用者。
![use sudo command change to super user](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux/use-sudo-s-change-permission.gif)
將 Microsoft SQL Server on Linux 下載至本機的 Images 清單。
docker pull microsoft/mssql-server-linux
![use pull command get image from official repository](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux/pull-mssql-server-linux-image.gif)
下載完成後可使用 docker images 指令本機電腦的 Images 清單。
![get host docker image list](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux/get-host-pulled-docker-image-list.gif)
執行 Microsoft SQL Server on Linux Image
將 AdventureWorks 範例資料庫放到主機的指定路徑,此情境中放在「/home/{user}/db」資料夾中。
![copy sample database mdf file in host location](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux/prepare-sample-database-mdf-file.gif)
使用 docker run 指令執行 image 檔案並將範例資料庫儲存資料夾位置對應到指定 Container 的資料夾。
docker run --name mssql-server-linux \
-e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Pa$$w0rd' \
-p 1433:1433 \
-v /home/{user}/db:/var/opt/mssql/advantruework \
-d \
microsoft/mssql-server-linux
參數說明 | |
--name mssql-server-linux | 指定 Container 名稱 |
-e 'SA_PASSWORD=Pa$$w0rd' | sa 帳號預設密碼 |
-p 1433:1433 | 主機與 Container 的連接埠對應 |
-v /home/{user}/db:/var/opt/mssql/advantruework | 主機與 Container 資料夾對應 |
-d | 持續執行 |
microsoft/mssql-server-linux | 要執行的 image |
![run mssql server linux image in docker](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux/run-docker-mssql-server-linux-image.gif)
使用 docker ps -a 指令查看 container 的狀態。
docker ps -a
![use docker ps -a command get created container list](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux/get-created-container-list.gif)
接下來透過 docker exec 指令進入 container 確認 volumn 設定。
docker exec -it mssql-server-linux /bin/bash
![use docker exec into container](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux/use-docker-exec-into-created-container.gif)
出現 root@{亂碼} 代表目前終端機已經進入 Container。
切換路徑至先前設定的資料夾「/var/opt/mssql/advanturework」,確認主機的範例資料庫檔案是否存在於 Container 中。
![get volumn folder files](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux/check-sample-database-file-in-container-bash.gif)
已成功與主機做對應,在 Container 中對此資料夾的變更皆會與 HOST 的資料夾同步。
確認 SQL Server 資料庫連線
在這使用 SqlCmd 連線到 Microsoft SQL Server in Linux,確認資料庫已經正確啟用。
sqlcmd -S {主機位址} -U sa -P Pa$$w0rd
![use sqlcmd connect sql server linux](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux/use-sqlcmd-connect-sql-server-in-linux.gif)
將 AdvantureWork 範例資料庫附加到 SQL Server
確認 SQL Server 有正確執行且可連線到之後,使用 SQL Server Management Studio 附加 AdvantureWork 範例資料庫。
![use ssms connect sql server on linux](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux//use-ssms-connect-sql-server.gif)
這裡使用 T-SQL 進行資料庫的附加作業
USE [master]
GO
CREATE DATABASE [AdventureWorks2012] ON
(
FILENAME = N'/var/opt/mssql/advantruework/AdventureWorks2012_Data.mdf'
)
FOR ATTACH
GO
![attach database use t-sql command](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux//attach-database-use-t-sql-command.gif)
提示訊息是因為沒有指定附加資料庫的 LOG 檔案,所以 SQL Server 會自動建立一個 LOG 檔案。
執行完成後 AdvantureWorks2012 資料庫就會出現在資料庫清單。
![attach database success](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/mssql-server-linux//attach-database-success.gif)
記得重新整理資料庫目錄清單。
若使用介面操作進行資料庫附加時須注意 Linux 檔案路徑的 "/" 與 Windows "\" 不相符,會出現有選擇到檔案卻無法附加功能的錯誤訊息。
留言
張貼留言