適用於:Linux 上的 SQL Server
在本快速入門中,您將使用 Docker 來提取和執行 SQL Server 2017 (14.x) Linux 容器映像,mssql-server-linux。 接著,您可以使用 sqlcmd 連線以建立您的第一個資料庫並執行查詢。
備註
SQL Server 容器映像僅支援在 Intel 和 AMD x86-64 CPU 上執行的 Linux 主機。 模擬或翻譯環境 (例如 Rosetta 2、Prism 或 QEMU) 未經過測試或支援。 如果您想要建立功能要求,或回報模擬器相關問題,請造訪 官方 GitHub 存放庫。
如需支援平台的詳細資訊,請參閱 Linux 上 SQL Server 2017 的版本資訊。
警告
當你停止並移除容器時,你就永久刪除了容器裡的 SQL Server 資料。 如需保留資料的詳細資訊,請建立備份檔案並複製到容器外,或使用容器資料持續性技術。
本快速入門會建立 SQL Server 2017 (14.x) 容器。 如果您想要為不同版本的 SQL Server 建立 Linux 容器,請參閱:
在本快速入門中,您將使用 Docker 來提取和執行 SQL Server 2019 (15.x) Linux 容器映像,mssql-server-linux。 接著,您可以使用 sqlcmd 連線以建立您的第一個資料庫並執行查詢。
備註
SQL Server 容器映像僅支援在 Intel 和 AMD x86-64 CPU 上執行的 Linux 主機。 模擬或翻譯環境 (例如 Rosetta 2、Prism 或 QEMU) 未經過測試或支援。 如果您想要建立功能要求,或回報模擬器相關問題,請造訪 官方 GitHub 存放庫。
如需支援平台的詳細資訊,請參閱 Linux 上 SQL Server 2019 的版本資訊。
警告
當你停止並移除容器時,你就永久刪除了容器裡的 SQL Server 資料。 如需保留資料的詳細資訊,請建立備份檔案並複製到容器外,或使用容器資料持續性技術。
本快速入門會建立 SQL Server 2019 (15.x) 容器。 如果您想要為不同版本的 SQL Server 建立 Linux 容器,請參閱:
在本快速入門中,您將使用 Docker 來提取和執行 SQL Server 2022 (16.x) Linux 容器映像,mssql-server-linux。 接著,您可以使用 sqlcmd 連線以建立您的第一個資料庫並執行查詢。
備註
SQL Server 容器映像僅支援在 Intel 和 AMD x86-64 CPU 上執行的 Linux 主機。 模擬或翻譯環境 (例如 Rosetta 2、Prism 或 QEMU) 未經過測試或支援。 如果您想要建立功能要求,或回報模擬器相關問題,請造訪 官方 GitHub 存放庫。
如需支援平台的詳細資訊,請參閱 Linux 上 SQL Server 2022 的版本資訊。
警告
當你停止並移除容器時,你就永久刪除了容器裡的 SQL Server 資料。 如需保留資料的詳細資訊,請建立備份檔案並複製到容器外,或使用容器資料持續性技術。
本快速入門會建立 SQL Server 2022 (16.x) 容器。 如果您想要為不同版本的 SQL Server 建立 Linux 容器,請參閱:
在這個快速入門中,你會使用 Docker 拉取並執行 SQL Server 2025 (17.x) Linux 容器映像檔 mssql-server-linux。 接著,您可以使用 sqlcmd 連線以建立您的第一個資料庫並執行查詢。
備註
SQL Server 容器映像僅支援在 Intel 和 AMD x86-64 CPU 上執行的 Linux 主機。 模擬或翻譯環境 (例如 Rosetta 2、Prism 或 QEMU) 未經過測試或支援。 如果您想要建立功能要求,或回報模擬器相關問題,請造訪 官方 GitHub 存放庫。
欲了解更多支援平台資訊,請參閱 Linux 上 SQL Server 2025 版本的釋出說明。
警告
當你停止並移除容器時,你就永久刪除了容器裡的 SQL Server 資料。 如需保留資料的詳細資訊,請建立備份檔案並複製到容器外,或使用容器資料持續性技術。
此快速入門指南可建立 SQL Server 2025(17.x)容器。 如果您想要為不同版本的 SQL Server 建立 Linux 容器,請參閱:
此映像檔包含運行於基於 Ubuntu 的 Linux 上的 SQL Server。 你可以在 Linux 上搭配 Docker Engine 1.8+ 使用。
在 SQL Server 2022 (16.x) CU 14 和更新版本中,容器映射包含全新 mssql-tools18 套件。 上一個目錄 /opt/mssql-tools/bin 正在逐步淘汰。Microsoft ODBC 18 工具的全新目錄是 /opt/mssql-tools18/bin,與最新的工具供應專案一致。 如需變更和安全性增強功能的詳細資訊,請參閱 ODBC 驅動程式 18.0 for SQL Server Released。
本文中的範例使用 docker 命令。 不過,多數命令也適用於 Podman。 Podman 提供類似於 Docker 引擎的命令列介面。 您可以進一步了解 Podman。
重要
sqlcmd 目前不支援建立容器時的 MSSQL_PID 參數。 如果您使用本快速入門中的 sqlcmd 指示,請使用 SQL Server 開發人員版本來建立容器。 使用命令列介面 (CLI) 指示,以使用您選擇的授權來建立容器。 如需詳細資訊,請參閱部署和連線到 SQL Server Linux 容器。
必要條件
- 任何支援的 Linux 發行版皆可使用 Docker Engine 1.8 或更新版本。 如需詳細資訊,請參閱安裝 Docker。
- 欲了解更多硬體需求與處理器支援資訊,請參閱 SQL Server 2016 與 SQL Server 2017 的硬體與軟體需求。
- 欲了解更多硬體需求及處理器支援資訊,請參閱 SQL Server 2019 的硬體與軟體需求。
- 欲了解更多硬體需求及處理器支援資訊,請參閱 SQL Server 2022 的硬體與軟體需求。
- 欲了解更多硬體需求與處理器支援資訊,請參閱 SQL Server 2025 的硬體與軟體需求。
Docker
overlay2儲存體驅動程式。 此驅動程式是適用於多數使用者的預設值。 如果你沒有使用這個儲存服務提供者且需要更改,請參考 Docker 文件中關於配置 overlay2 的說明與警告。在 Docker 主機上安裝最新的 sqlcmd。
至少 2 GB 的磁碟空間。
至少 2 GB 的 RAM。
提取並執行 SQL Server Linux 容器映像
開始下列步驟之前,請確定您已在本文頂端選取您慣用的 Shell (Bash、PowerShell 或 cmd)。
本文中使用了sudo指令來處理 bash 指令。 如果您不想使用 sudo 來執行 Docker,您可以設定 docker 群組,並將使用者新增至該群組。 如需詳細資訊,請參閱 Post-installation steps for Linux (適用於 Linux 的安裝後步驟)。
從登錄提取容器映像
從 Microsoft Container Registry 提取 SQL Server 2017 (14.x) Linux 容器映像。
sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
docker pull mcr.microsoft.com/mssql/server:2017-latest
docker pull mcr.microsoft.com/mssql/server:2017-latest
本快速入門會建立 SQL Server 2017 (14.x) 容器。 如果您想要為不同版本的 SQL Server 建立 Linux 容器,請參閱:
上述命令會提取最新的 SQL Server 2017 (14.x) Linux 容器映像。 要拉取特定圖片,請加上冒號和標籤名稱,例如 mcr.microsoft.com/mssql/server:2017-GA-ubuntu。 若要查看所有可用的映像,請參閱 Microsoft 成品登錄。
執行容器
要使用 Docker 執行 Linux 容器映像檔,請在 bash shell 或提升權限的 PowerShell 命令提示字元中使用以下命令。
重要
SA_PASSWORD 環境變數已被取代。 請改用 MSSQL_SA_PASSWORD。
sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
-p 1433:1433 --name sql1 --hostname sql1 \
-d \
mcr.microsoft.com/mssql/server:2017-latest
如果正在使用 PowerShell Core,請將雙引號取代為單引號。
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2017-latest
警告
您的密碼應遵循 SQL Server 預設 密碼原則。 依預設,密碼長度必須至少有 8 個字元,並包含下列四種字元組合中其中三種組合的字元:大寫字母、小寫字母、以 10 為底數的數字以及符號。 密碼長度最多可達 128 個字元。 盡可能使用長且複雜的密碼。 如果您未遵循這些密碼需求,容器就無法設定 SQL Server 並停止運作。 使用 docker logs 命令即可查看錯誤記錄。
依預設,此快速入門會建立 SQL Server Developer 版本的容器。 在容器中執行生產版本的程序將有些微差異。 如需詳細資訊,請參閱執行生產容器映像。
下表提供了前述 docker run 範例的參數描述:
| 參數 | 描述 |
|---|---|
-e "ACCEPT_EULA=Y" |
將 ACCEPT_EULA 變數設為任意值可確認您接受終端使用者授權合約。 此為 SQL Server 映像的必要設定。 |
-e "MSSQL_SA_PASSWORD=<password>" |
請指定你自己的強密碼,至少八個字元,且符合 密碼政策。 此為 SQL Server 映像的必要設定。 |
-e "MSSQL_COLLATION=<SQL_Server_collation>" |
指定自訂 SQL Server 定序,而非預設 SQL_Latin1_General_CP1_CI_AS。 |
-p 1433:1433 |
將主機環境上的 TCP 連接埠 (第一個值) 對應至容器中的 TCP 連接埠 (第二個值)。 在本範例中,SQL Server 正在接聽容器中的 TCP 1433,且此容器連接埠接著會對主機上的 TCP 連接埠 1433 公開。 |
--name sql1 |
為容器指定自訂名稱,而不使用隨機產生的名稱。 若您執行數個容器,便無法重複使用此相同名稱。 |
--hostname sql1 |
用來明確設定容器主機名稱。 如果您未指定主機名稱,則會預設為隨機產生之系統 GUID 的容器識別碼。 |
-d |
在背景執行容器 (精靈)。 |
mcr.microsoft.com/mssql/server:2017-latest |
SQL Server Linux 容器映像。 |
檢視容器清單
若要檢視 Docker 容器,請使用
docker ps命令。sudo docker ps -adocker ps -adocker ps -a輸出看起來類似下列範例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4a1999ef83e mcr.microsoft.com/mssql/server:2017-latest "/opt/mssql/bin/perm..." 2 minutes ago Up 2 minutes 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp sql1若
STATUS欄位顯示的狀態含Up,表示 SQL Server 正在容器中執行且接聽於PORTS欄位中指定的連接埠。 如果 SQL Server 容器的STATUS欄顯示Exited,請參閱對 SQL Server Docker 容器進行疑難排解。 一旦 SQL Server 錯誤記錄檔顯示下列訊息,表示伺服器已準備好進行連線:SQL Server is now ready for client connections. This is an informational message; no user action is required。 您可以使用下列命令,在容器內檢閱 SQL Server 錯誤記錄檔:sudo docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection先前討論的
--hostname參數可將容器的內部名稱變更為自訂值。 此值是您在下列 Transact-SQL 查詢中會看到的傳回名稱:SELECT @@SERVERNAME, SERVERPROPERTY('ComputerNamePhysicalNetBIOS'), SERVERPROPERTY('MachineName'), SERVERPROPERTY('ServerName');建議您將
--hostname與--name設為相同的值,這會讓識別目標容器更輕鬆。因為 會顯示在
MSSQL_SA_PASSWORD輸出中,且儲存在相同名稱的環境變數中,所以實際執行環境中的最後一個步驟是ps -eax。
提取並執行 SQL Server Linux 容器映像
開始下列步驟之前,請確定您已在本文頂端選取您慣用的 Shell (Bash、PowerShell 或 cmd)。
本文中的 bash 指令使用了sudo這個命令。 如果您不想使用 sudo 來執行 Docker,您可以設定 docker 群組,並將使用者新增至該群組。 如需詳細資訊,請參閱 Post-installation steps for Linux (適用於 Linux 的安裝後步驟)。
從登錄提取容器
從 Microsoft Container Registry 提取 SQL Server 2019 (15.x) Linux 容器映像。
docker pull mcr.microsoft.com/mssql/server:2019-latest
docker pull mcr.microsoft.com/mssql/server:2019-latest
docker pull mcr.microsoft.com/mssql/server:2019-latest
本快速入門會建立 SQL Server 2019 (15.x) 容器。 如果您想要為不同版本的 SQL Server 建立 Linux 容器,請參閱:
上述命令會提取最新的 SQL Server 2019 (15.x) Linux 容器映像。 要拉取特定圖片,請加上冒號和標籤名稱,例如 mcr.microsoft.com/mssql/server:2019-GA-ubuntu。 若要查看所有可用的映像,請參閱 Microsoft 成品登錄。
執行容器
要用 Docker 執行 Linux 容器映像,請使用以下命令在 bash shell 或具有管理員權限的 PowerShell 命令提示字元中執行。
重要
SA_PASSWORD 環境變數已被取代。 請改用 MSSQL_SA_PASSWORD。
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
-p 1433:1433 --name sql1 --hostname sql1 \
-d \
mcr.microsoft.com/mssql/server:2019-latest
如果正在使用 PowerShell Core,請將雙引號取代為單引號。
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2019-latest
警告
您的密碼應遵循 SQL Server 預設 密碼原則。 依預設,密碼長度必須至少有 8 個字元,並包含下列四種字元組合中其中三種組合的字元:大寫字母、小寫字母、以 10 為底數的數字以及符號。 密碼長度最多可達 128 個字元。 盡可能使用長且複雜的密碼。
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2019-latest
警告
您的密碼應遵循 SQL Server 預設 密碼原則。 依預設,密碼長度必須至少有 8 個字元,並包含下列四種字元組合中其中三種組合的字元:大寫字母、小寫字母、以 10 為底數的數字以及符號。 密碼長度最多可達 128 個字元。 盡可能使用長且複雜的密碼。 如果您未遵循這些密碼需求,容器就無法設定 SQL Server 並停止運作。 使用 docker logs 命令即可查看錯誤記錄。
依預設,此快速入門會建立 SQL Server Developer 版本的容器。 在容器中執行生產版本的程序將有些微差異。 如需詳細資訊,請參閱執行生產容器映像。
下表提供了前述 docker run 範例的參數描述:
| 參數 | 描述 |
|---|---|
-e "ACCEPT_EULA=Y" |
將 ACCEPT_EULA 變數設為任意值可確認您接受終端使用者授權合約。 此為 SQL Server 映像的必要設定。 |
-e "MSSQL_SA_PASSWORD=<password>" |
請指定你自己的強密碼,至少八個字元,且符合 密碼政策。 此為 SQL Server 映像的必要設定。 |
-e "MSSQL_COLLATION=<SQL_Server_collation>" |
指定自訂 SQL Server 定序,而非預設 SQL_Latin1_General_CP1_CI_AS。 |
-p 1433:1433 |
將主機環境上的 TCP 連接埠 (第一個值) 對應至容器中的 TCP 連接埠 (第二個值)。 在本範例中,SQL Server 正在接聽容器中的 TCP 1433,且此容器連接埠接著會對主機上的 TCP 連接埠 1433 公開。 |
--name sql1 |
為容器指定自訂名稱,而不使用隨機產生的名稱。 若您執行數個容器,便無法重複使用此相同名稱。 |
--hostname sql1 |
用來明確設定容器主機名稱。 如果您未指定主機名稱,則會預設為隨機產生之系統 GUID 的容器識別碼。 |
-d |
在背景執行容器 (精靈)。 |
mcr.microsoft.com/mssql/server:2019-latest |
SQL Server Linux 容器映像。 |
檢視容器清單
若要檢視 Docker 容器,請使用
docker ps命令。docker ps -adocker ps -adocker ps -a輸出看起來類似下列範例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4a1999ef83e mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm..." 2 minutes ago Up 2 minutes 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp sql1若
STATUS欄位顯示的狀態含Up,表示 SQL Server 正在容器中執行且接聽於PORTS欄位中指定的連接埠。 如果 SQL Server 容器的STATUS欄顯示Exited,請參閱對 SQL Server Docker 容器進行疑難排解。 一旦 SQL Server 錯誤記錄檔顯示下列訊息,表示伺服器已準備好進行連線:SQL Server is now ready for client connections. This is an informational message; no user action is required。 您可以使用下列命令,在容器內檢閱 SQL Server 錯誤記錄檔:docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection先前討論的
--hostname參數可將容器的內部名稱變更為自訂值。 此值是您在下列 Transact-SQL 查詢中會看到的傳回名稱:SELECT @@SERVERNAME, SERVERPROPERTY('ComputerNamePhysicalNetBIOS'), SERVERPROPERTY('MachineName'), SERVERPROPERTY('ServerName');建議您將
--hostname與--name設為相同的值,這會讓識別目標容器更輕鬆。因為 會顯示在
MSSQL_SA_PASSWORD輸出中,且儲存在相同名稱的環境變數中,所以實際執行環境中的最後一個步驟是ps -eax。
提取並執行 SQL Server Linux 容器映像
開始下列步驟之前,請確定您已在本文頂端選取您慣用的 Shell (Bash、PowerShell 或 cmd)。
本文中的 bash 指令使用了sudo命令。 如果您不想使用 sudo 來執行 Docker,您可以設定 docker 群組,並將使用者新增至該群組。 如需詳細資訊,請參閱 Post-installation steps for Linux (適用於 Linux 的安裝後步驟)。
從登錄提取容器映像
從 Microsoft Container Registry 提取 SQL Server 2022 (16.x) Linux 容器映像。
docker pull mcr.microsoft.com/mssql/server:2022-latest
docker pull mcr.microsoft.com/mssql/server:2022-latest
docker pull mcr.microsoft.com/mssql/server:2022-latest
本快速入門會建立 SQL Server 2022 (16.x) 容器。 如果您想要為不同版本的 SQL Server 建立 Linux 容器,請參閱:
上述命令會提取最新的 SQL Server 2022 (16.x) Linux 容器映像。 要拉取特定圖片,請加上冒號和標籤名稱,例如 mcr.microsoft.com/mssql/server:2022-GA-ubuntu。 若要查看所有可用的映像,請參閱 Microsoft 成品登錄。
執行容器
要用 Docker 執行 Linux 容器映像,請在 bash shell 之中,或在進階 PowerShell 命令提示字元中,使用以下命令。
重要
SA_PASSWORD 環境變數已被取代。 請改用 MSSQL_SA_PASSWORD。
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
-p 1433:1433 --name sql1 --hostname sql1 \
-d \
mcr.microsoft.com/mssql/server:2022-latest
如果正在使用 PowerShell Core,請將雙引號取代為單引號。
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2022-latest
警告
您的密碼應遵循 SQL Server 預設 密碼原則。 依預設,密碼長度必須至少有 8 個字元,並包含下列四種字元組合中其中三種組合的字元:大寫字母、小寫字母、以 10 為底數的數字以及符號。 密碼長度最多可達 128 個字元。 盡可能使用長且複雜的密碼。 如果您未遵循這些密碼需求,容器就無法設定 SQL Server 並停止運作。 使用 docker logs 命令即可查看錯誤記錄。
依預設,此快速入門會建立 SQL Server Developer 版本的容器。 在容器中執行生產版本的程序將有些微差異。 如需詳細資訊,請參閱執行生產容器映像。
下表提供了前述 docker run 範例的參數描述:
| 參數 | 描述 |
|---|---|
-e "ACCEPT_EULA=Y" |
將 ACCEPT_EULA 變數設為任意值可確認您接受終端使用者授權合約。 此為 SQL Server 映像的必要設定。 |
-e "MSSQL_SA_PASSWORD=<password>" |
請指定你自己的強密碼,至少八個字元,且符合 密碼政策。 此為 SQL Server 映像的必要設定。 |
-e "MSSQL_COLLATION=<SQL_Server_collation>" |
指定自訂 SQL Server 定序,而非預設 SQL_Latin1_General_CP1_CI_AS。 |
-p 1433:1433 |
將主機環境上的 TCP 連接埠 (第一個值) 對應至容器中的 TCP 連接埠 (第二個值)。 在本範例中,SQL Server 正在接聽容器中的 TCP 1433,且此容器連接埠接著會對主機上的 TCP 連接埠 1433 公開。 |
--name sql1 |
為容器指定自訂名稱,而不使用隨機產生的名稱。 若您執行數個容器,便無法重複使用此相同名稱。 |
--hostname sql1 |
用來明確設定容器主機名稱。 如果您未指定主機名稱,則會預設為隨機產生之系統 GUID 的容器識別碼。 |
-d |
在背景執行容器 (精靈)。 |
mcr.microsoft.com/mssql/server:2022-latest |
SQL Server Linux 容器映像。 |
變更系統管理員密碼
系統管理員帳號(sa)會在設定過程中建立於 SQL Server 實例上。 建立 SQL Server 容器後,在容器中執行 echo $MSSQL_SA_PASSWORD ,發現 MSSQL_SA_PASSWORD 你指定的環境變數。 基於安全性考慮,您應該在生產環境中變更密碼 sa 。
選擇要用於帳戶的
sa強密碼。 您的密碼應遵循 SQL Server 預設 密碼原則。 依預設,密碼長度必須至少有 8 個字元,並包含下列四種字元組合中其中三種組合的字元:大寫字母、小寫字母、以 10 為底數的數字以及符號。 密碼長度最多可達 128 個字元。 盡可能使用長且複雜的密碼。使用
docker exec來執行 sqlcmd,以使用 Transact-SQL 變更密碼。 在下列範例中,系統會從使用者輸入讀取舊密碼和新密碼。docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \ -S localhost -U sa \ -P "$(read -sp "Enter current SA password: "; echo "${REPLY}")" \ -Q "ALTER LOGIN sa WITH PASSWORD=\"$(read -sp "Enter new SA password: "; echo "${REPLY}")\""docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd ` -S localhost -U sa -P "<password>" ` -Q "ALTER LOGIN sa WITH PASSWORD='<new-password>'"docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd ` -S localhost -U sa -P "<password>" ` -Q "ALTER LOGIN sa WITH PASSWORD='<new-password>'"警告
您的密碼應遵循 SQL Server 預設 密碼原則。 依預設,密碼長度必須至少有 8 個字元,並包含下列四種字元組合中其中三種組合的字元:大寫字母、小寫字母、以 10 為底數的數字以及符號。 密碼長度最多可達 128 個字元。 盡可能使用長且複雜的密碼。
最新版本的 sqlcmd 預設為安全。 如需連線加密的詳細資訊,請參閱適用於 Windows 的 sqlcmd 公用程式,以及適用於 Linux 和 macOS 的使用 sqlcmd 進行連線。 如果連線不成功,您可以將
-No選項新增至 sqlcmd,以指定加密是選擇性的,而不是強制性的。
停用 SA 帳戶作為最佳做法
重要
你需要這些憑證以便進行後續步驟。 請務必記下您在此處輸入的使用者識別碼和密碼。
當您在安裝后第一次使用系統管理員 (sa) 帳戶連線到 SQL Server 實例時,請務必遵循這些步驟,然後立即停用 sa 帳戶作為安全性最佳做法。
建立新的登入,並將其設為 sysadmin 伺服器角色的成員。
視您擁有容器還是非容器部署而定,請啟用 Windows 驗證,並建立新的 Windows 型登入,並將其新增至 sysadmin 伺服器角色。
否則,請使用 SQL Server 驗證建立登入,並將它新增至 sysadmin 伺服器角色。
使用您建立的新登入,連線至 SQL Server 執行個體。
建議的安全性最佳做法為停用
sa帳戶。
檢視容器清單
若要檢視 Docker 容器,請使用
docker ps命令。docker ps -adocker ps -adocker ps -a輸出看起來類似下列範例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4a1999ef83e mcr.microsoft.com/mssql/server:2022-latest "/opt/mssql/bin/perm..." 2 minutes ago Up 2 minutes 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp sql1若
STATUS欄位顯示的狀態含Up,表示 SQL Server 正在容器中執行且接聽於PORTS欄位中指定的連接埠。 如果 SQL Server 容器的STATUS欄顯示Exited,請參閱對 SQL Server Docker 容器進行疑難排解。 一旦 SQL Server 錯誤記錄檔顯示下列訊息,表示伺服器已準備好進行連線:SQL Server is now ready for client connections. This is an informational message; no user action is required。 您可以使用下列命令,在容器內檢閱 SQL Server 錯誤記錄檔:docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection先前討論的
--hostname參數可將容器的內部名稱變更為自訂值。 此值是您在下列 Transact-SQL 查詢中會看到的傳回名稱:SELECT @@SERVERNAME, SERVERPROPERTY('ComputerNamePhysicalNetBIOS'), SERVERPROPERTY('MachineName'), SERVERPROPERTY('ServerName');建議您將
--hostname與--name設為相同的值,這會讓識別目標容器更輕鬆。
提取並執行 SQL Server Linux 容器映像
開始下列步驟之前,請確定您已在本文頂端選取您慣用的 Shell (Bash、PowerShell 或 cmd)。
本文中的 bash 指令是sudo 如果您不想使用 sudo 來執行 Docker,您可以設定 docker 群組,並將使用者新增至該群組。 如需詳細資訊,請參閱 Post-installation steps for Linux (適用於 Linux 的安裝後步驟)。
從登錄提取容器映像
從 Microsoft 容器登錄檔拉取 SQL Server 2025 (17.x) Linux 容器映像檔。
docker pull mcr.microsoft.com/mssql/server:2025-latest
docker pull mcr.microsoft.com/mssql/server:2025-latest
docker pull mcr.microsoft.com/mssql/server:2025-latest
此快速入門指南可建立 SQL Server 2025(17.x)容器。 如果您想要為不同版本的 SQL Server 建立 Linux 容器,請參閱:
前一個指令會拉取最新的 SQL Server 2025(17.x)Linux 容器映像檔。 要拉取特定圖片,請加上冒號和標籤名稱,例如 mcr.microsoft.com/mssql/server:2025-GA-ubuntu。 若要查看所有可用的映像,請參閱 Microsoft 成品登錄。
執行容器
要用 Docker 執行 Linux 容器映像檔,請使用以下 bash shell 或提升級的 PowerShell 命令提示字元。
重要
SA_PASSWORD 環境變數已被取代。 請改用 MSSQL_SA_PASSWORD。
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
-p 1433:1433 --name sql1 --hostname sql1 \
-d \
mcr.microsoft.com/mssql/server:2025-latest
如果正在使用 PowerShell Core,請將雙引號取代為單引號。
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2025-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2025-latest
警告
您的密碼應遵循 SQL Server 預設 密碼原則。 依預設,密碼長度必須至少有 8 個字元,並包含下列四種字元組合中其中三種組合的字元:大寫字母、小寫字母、以 10 為底數的數字以及符號。 密碼長度最多可達 128 個字元。 盡可能使用長且複雜的密碼。 如果您未遵循這些密碼需求,容器就無法設定 SQL Server 並停止運作。 使用 docker logs 命令即可查看錯誤記錄。
依預設,此快速入門會建立 SQL Server Developer 版本的容器。 在容器中執行生產版本的程序將有些微差異。 如需詳細資訊,請參閱執行生產容器映像。
下表提供了前述 docker run 範例的參數描述:
| 參數 | 描述 |
|---|---|
-e "ACCEPT_EULA=Y" |
將 ACCEPT_EULA 變數設為任意值可確認您接受終端使用者授權合約。 此為 SQL Server 映像的必要設定。 |
-e "MSSQL_SA_PASSWORD=<password>" |
請指定你自己的強密碼,至少八個字元,且符合 密碼政策。 此為 SQL Server 映像的必要設定。 |
-e "MSSQL_COLLATION=<SQL_Server_collation>" |
指定自訂 SQL Server 定序,而非預設 SQL_Latin1_General_CP1_CI_AS。 |
-p 1433:1433 |
將主機環境上的 TCP 連接埠 (第一個值) 對應至容器中的 TCP 連接埠 (第二個值)。 在本範例中,SQL Server 正在接聽容器中的 TCP 1433,且此容器連接埠接著會對主機上的 TCP 連接埠 1433 公開。 |
--name sql1 |
為容器指定自訂名稱,而不使用隨機產生的名稱。 若您執行數個容器,便無法重複使用此相同名稱。 |
--hostname sql1 |
用來明確設定容器主機名稱。 如果您未指定主機名稱,則會預設為隨機產生之系統 GUID 的容器識別碼。 |
-d |
在背景執行容器 (精靈)。 |
mcr.microsoft.com/mssql/server:2025-latest |
SQL Server Linux 容器映像。 |
變更系統管理員密碼
系統管理員帳號(sa)會在設定過程中建立於 SQL Server 實例上。 建立 SQL Server 容器後,在容器中執行 echo $MSSQL_SA_PASSWORD ,發現 MSSQL_SA_PASSWORD 你指定的環境變數。 基於安全性考慮,您應該在生產環境中變更密碼 sa 。
選擇要用於帳戶的
sa強密碼。 您的密碼應遵循 SQL Server 預設 密碼原則。 依預設,密碼長度必須至少有 8 個字元,並包含下列四種字元組合中其中三種組合的字元:大寫字母、小寫字母、以 10 為底數的數字以及符號。 密碼長度最多可達 128 個字元。 盡可能使用長且複雜的密碼。使用
docker exec來執行 sqlcmd,以使用 Transact-SQL 變更密碼。 在下列範例中,系統會從使用者輸入讀取舊密碼和新密碼。docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \ -S localhost -U sa \ -P "$(read -sp "Enter current SA password: "; echo "${REPLY}")" \ -Q "ALTER LOGIN sa WITH PASSWORD=\"$(read -sp "Enter new SA password: "; echo "${REPLY}")\""docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd ` -S localhost -U sa -P "<password>" ` -Q "ALTER LOGIN sa WITH PASSWORD='<new-password>'"docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd ` -S localhost -U sa -P "<password>" ` -Q "ALTER LOGIN sa WITH PASSWORD='<new-password>'"警告
您的密碼應遵循 SQL Server 預設 密碼原則。 依預設,密碼長度必須至少有 8 個字元,並包含下列四種字元組合中其中三種組合的字元:大寫字母、小寫字母、以 10 為底數的數字以及符號。 密碼長度最多可達 128 個字元。 盡可能使用長且複雜的密碼。
最新版本的 sqlcmd 預設為安全。 如需連線加密的詳細資訊,請參閱適用於 Windows 的 sqlcmd 公用程式,以及適用於 Linux 和 macOS 的使用 sqlcmd 進行連線。 如果連線不成功,您可以將
-No選項新增至 sqlcmd,以指定加密是選擇性的,而不是強制性的。
停用 SA 帳戶作為最佳做法
重要
你需要這些憑證以便進行後續步驟。 請務必記下您在此處輸入的使用者識別碼和密碼。
當您在安裝后第一次使用系統管理員 (sa) 帳戶連線到 SQL Server 實例時,請務必遵循這些步驟,然後立即停用 sa 帳戶作為安全性最佳做法。
建立新的登入,並將其設為 sysadmin 伺服器角色的成員。
視您擁有容器還是非容器部署而定,請啟用 Windows 驗證,並建立新的 Windows 型登入,並將其新增至 sysadmin 伺服器角色。
否則,請使用 SQL Server 驗證建立登入,並將它新增至 sysadmin 伺服器角色。
使用您建立的新登入,連線至 SQL Server 執行個體。
建議的安全性最佳做法為停用
sa帳戶。
檢視容器清單
若要檢視 Docker 容器,請使用
docker ps命令。docker ps -adocker ps -adocker ps -a輸出看起來類似下列範例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4a1999ef83e mcr.microsoft.com/mssql/server:2025-latest "/opt/mssql/bin/perm..." 2 minutes ago Up 2 minutes 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp sql1若
STATUS欄位顯示的狀態含Up,表示 SQL Server 正在容器中執行且接聽於PORTS欄位中指定的連接埠。 如果 SQL Server 容器的STATUS欄顯示Exited,請參閱對 SQL Server Docker 容器進行疑難排解。 一旦 SQL Server 錯誤記錄檔顯示下列訊息,表示伺服器已準備好進行連線:SQL Server is now ready for client connections. This is an informational message; no user action is required。 您可以使用下列命令,在容器內檢閱 SQL Server 錯誤記錄檔:docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection先前討論的
--hostname參數可將容器的內部名稱變更為自訂值。 此值是您在下列 Transact-SQL 查詢中會看到的傳回名稱:SELECT @@SERVERNAME, SERVERPROPERTY('ComputerNamePhysicalNetBIOS'), SERVERPROPERTY('MachineName'), SERVERPROPERTY('ServerName');建議您將
--hostname與--name設為相同的值,這會讓識別目標容器更輕鬆。
連接至 SQL Server
下列步驟會在容器中使用 SQL Server 命令列工具 sqlcmd 公用程式以連線至 SQL Server。
使用
docker exec -it命令在您執行的容器中啟動互動式 Bash 殼層。 在下列範例中,sql1是您在建立容器時由--name參數指定的名稱。docker exec -it sql1 "bash"docker exec -it sql1 "bash"docker exec -it sql1 "bash"
進入容器後,以 sqlcmd 並使用其完整路徑進行本機連線。
/opt/mssql-tools/bin/sqlcmd -S localhost -U <userid> -P "<password>"最新版本的 sqlcmd 預設為安全。 如需連線加密的詳細資訊,請參閱適用於 Windows 的 sqlcmd 公用程式,以及適用於 Linux 和 macOS 的使用 sqlcmd 進行連線。 如果連線不成功,您可以將
-No選項新增至 sqlcmd,以指定加密是選擇性的,而不是強制性的。您可以在命令列中省略密碼,不要在提示時輸入密碼。 例如:
/opt/mssql-tools/bin/sqlcmd -S localhost -U <userid>
進入容器後,以 sqlcmd 並使用其完整路徑進行本機連線。
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid> -P "<password>"最新版本的 sqlcmd 預設為安全。 如需連線加密的詳細資訊,請參閱適用於 Windows 的 sqlcmd 公用程式,以及適用於 Linux 和 macOS 的使用 sqlcmd 進行連線。 如果連線不成功,您可以將
-No選項新增至 sqlcmd,以指定加密是選擇性的,而不是強制性的。您可以在命令列中省略密碼,不要在提示時輸入密碼。 例如:
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid>
- 若成功,則進入 sqlcmd 指令提示字元:
1>。
建立及查詢資料
以下章節將教你如何使用 sqlcmd 和 Transact-SQL 建立新資料庫、新增資料並執行查詢。
建立新資料庫
下列步驟會建立名為 TestDB 的新資料庫。
從 sqlcmd 命令提示字元,貼上下列 Transact-SQL 命令以建立測試資料庫:
CREATE DATABASE TestDB;在下一行,撰寫查詢以傳回您伺服器上所有資料庫的名稱:
SELECT name FROM sys.databases;前兩個指令不會立即執行。 在新的一行上鍵入
GO來執行先前命令:GO
插入資料
接著,建立一個名為 Inventory 新的資料表,並插入兩列新資料。
從 sqlcmd 命令提示字元,將內容切換至
TestDB資料庫:USE TestDB;建立一個名為 的新表格:
InventoryCREATE TABLE Inventory ( id INT, name NVARCHAR (50), quantity INT );將資料插入新的資料表:
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);鍵入
GO來執行先前命令:GO
選取資料
現在,執行查詢以從 Inventory 資料表傳回資料。
從 sqlcmd 命令提示字元,輸入查詢以從
Inventory資料表傳回 quantity (數量) 大於 152 的資料列:SELECT * FROM Inventory WHERE quantity > 152;執行命令:
GO
結束 sqlcmd 命令提示字元
若要結束您的 sqlcmd 工作階段,請鍵入
QUIT:QUIT若要結束容器中的互動式命令提示字元,請鍵入
exit。 結束互動式 Bash 殼層後,容器會繼續執行。
從容器外部連線
你可以從任何支援 SQL 連線的外部 Linux、Windows 或 macOS 工具,連接到 Docker 機器上的 SQL Server 實例。 外部工具會使用主機電腦的 IP 位址。
下列步驟在您容器的外部使用了 sqlcmd 以連線至容器中執行的 SQL Server。 這些步驟會假設您已經在容器外部安裝 SQL Server 命令列工具。 使用其他工具時亦適用相同原則,但各工具的連線程序不盡相同。
使用
ifconfig或ip addr以尋找容器主機電腦的 IP 位址。針對此範例,請在您的用戶端電腦上安裝 sqlcmd 工具。 如需詳細資訊,請參閱 sqlcmd 公用程式 或 在 Linux 上安裝 sqlcmd 和 bcp SQL Server 命令行工具。
執行 sqlcmd 來指定 IP 位址,以及對應至您容器連接埠 1433 的連接埠。 在此範例中,連接埠即為主機電腦上的相同連接埠 1433。 如果你在主機上指定了不同的對應埠,請在這裡使用。 您也將需要在防火牆上開啟適當的輸入連接埠來允許連線。
最新版本的 sqlcmd 預設為安全。 如果連線失敗,且你使用的是版本 18 或更高,可以在
-No中加入選項,指定加密是可選的,而非強制的。sudo sqlcmd -S <ip_address>,1433 -U <userid> -P "<password>"sqlcmd -S <ip_address>,1433 -U <userid> -P "<password>"sqlcmd -S <ip_address>,1433 -U <userid> -P "<password>"警告
您的密碼應遵循 SQL Server 預設 密碼原則。 依預設,密碼長度必須至少有 8 個字元,並包含下列四種字元組合中其中三種組合的字元:大寫字母、小寫字母、以 10 為底數的數字以及符號。 密碼長度最多可達 128 個字元。 盡可能使用長且複雜的密碼。
執行 Transact-SQL 命令。 完成後,鍵入
QUIT。
其他常用的 SQL Server 連線工具包括:
- 適用於 Visual Studio Code 的 msSQL 擴充功能
- SQL Server 管理工作室
- mssql-cli (預覽)
- PowerShell
移除容器
若要移除本教學課程中用到的 SQL Server 容器,請執行下列命令:
docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1
Dock 示範
在您使用完適用於 Docker 的 SQL Server Linux 容器映像後,或許會想要了解如何使用 Docker 來改善開發與測試。 下方影片會示範如何在持續整合與部署案例中使用 Docker。
相關工作
相關內容
參與編輯 SQL 文件
您知道您可以自行編輯 SQL 內容嗎? 這樣做不僅可以協助改善文件,也能名列該頁面的參與者。
如需詳細資訊,請參閱 編輯 Microsoft Learn 文件。