快速入門:在適用於 Linux 的 Windows 子系統上安裝 SQL Server 並建立資料庫 (WSL 2)
適用於:SQL Server - Linux
適用於Linux的 Windows 子系統 (WSL) 是 Windows 中的一項功能,可讓您直接在 Windows 電腦上執行 Linux 環境,而不需要虛擬機或雙開機。 WSL 可為想要同時使用 Windows 和 Linux 的開發人員提供順暢且具生產力的體驗。 如需詳細資訊,請參閱 什麼是適用於Linux的Windows子系統?
WSL 上的 SQL Server 僅供開發使用
WSL 2 上的 SQL Server 僅供開發之用,且 生產工作負載不支援。 針對您想要執行的 SQL Server 版本,建議您在其中一個 支援的平台上執行 SQL Server。
針對任何支持相關問題,您可以 從 Microsoft取得協助。
開始學習如何在 WSL 2 上使用 SQL Server
有兩種方式可在 WSL 2 上開始使用 SQL Server:
將 SQL Server 安裝為
systemd
服務,可使用systemctl
命令加以管理。 請確定您在 WSL 上啟用systemd
。 如需詳細資訊,請參閱 如何啟用 systemd。在 WSL 中部署 SQL Server 容器。 針對此選項,您必須在 WSL 中安裝 Linux 容器引擎,例如 Docker 或 Podman,然後部署 SQL Server 容器。
先決條件
安裝 WSL 2。 確保您正在執行 Windows 10 版本 2004 或更高版本(組建 19041 或更高版本),或 Windows 11。 若要安裝 WSL,請在系統管理員模式中開啟 PowerShell 或 Windows 命令提示字元,然後執行下列命令:
wsl --install
如需詳細指示,請參閱 如何使用 WSL在 Windows 上安裝 Linux。 如需設定 WSL 環境以進行開發的資訊,請參閱 設定 WSL 開發環境。
在 WSL 中安裝 SQL Server
本節說明在 WSL 中設定 Linux 發行版的步驟,以及如何在該 Linux 發行版中安裝 SQL Server。
選擇 Linux 發行版
您可以使用下列命令列出可在 WSL 中安裝的所有有效發行版本:
wsl -l -o
輸出看起來類似下列範例。
The following is a list of valid distributions that can be installed.
Install using 'wsl.exe --install <Distro>'.
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
Ubuntu-24.04 Ubuntu 24.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
openSUSE-Leap-15.6 openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
openSUSE-Tumbleweed openSUSE Tumbleweed
在本快速入門中,請安裝Ubuntu22.04,然後將 SQL Server 2022 安裝到該發行版。
若要安裝Ubuntu 22.04,請執行下列命令。 記下 UNIX 使用者帳戶和密碼。 在此範例中,請使用 wsluser
作為用戶名稱。
wsl --install -d Ubuntu-22.04
您應該會看到類似下列範例的輸出。 最後,應該會顯示您已登入 Ubuntu 22.04 的 bash shell。
Installing: Ubuntu 22.04 LTS
Ubuntu 22.04 LTS has been installed.
Launching Ubuntu 22.04 LTS...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: wsluser
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Tue Dec 3 00:32:14 IST 2024
System load: 0.33 Processes: 32
Usage of /: 0.1% of 1006.85GB Users logged in: 0
Memory usage: 2% IPv4 address for eth0: 10.18.123.249
Swap usage: 0%
This message is shown once a day. To disable it please create the
/home/wsluser/.hushlogin file.
安裝 SQL Server
登入Ubuntu 22.04 bash殼層之後,您可以遵循 快速入門:安裝 SQL Server 並在 Ubuntu 上建立資料庫以安裝 SQL Server 2022 中所述的步驟。
您也應該 安裝 SQL Server 命令行工具。
取得IP位址
若要識別使用 SQL Server Management Studio (SSMS) 連線的 IP 位址,請執行 ifconfig
命令,如下所示:
ifconfig
您應該會看到類似下列範例的輸出。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.19.50.241 netmask 255.255.240.0 broadcast 10.19.63.255
inet6 fe80::215:5dff:fe76:c05d prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:76:c0:5d txqueuelen 1000 (Ethernet)
RX packets 2146 bytes 1452448 (1.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1905 bytes 345288 (345.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 2039 bytes 4144340 (4.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2039 bytes 4144340 (4.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
在 WSL 中部署 SQL Server 容器
若要在 WSL 中部署容器,您必須先安裝 Linux 容器引擎,例如 Docker。 如需詳細資訊,請參閱 在 WSL 上開始使用 Docker 遠端容器。 安裝 Docker 引擎之後,請部署 SQL Server 容器映射,如下所示。
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
-e "MSSQL_PID=Developer" -e "MSSQL_AGENT_ENABLED=true" \
-p 14333:1433 --name sqlcontainerwsl --hostname sqlcontainerwsl \
-d mcr.microsoft.com/mssql/server:2022-latest
注意
您的密碼應遵循 SQL Server 預設 密碼原則。 根據預設,密碼長度必須至少為8個字元,且包含下列四個集合中的三個字元:大寫字母、小寫字母、基底10位數和符號。 密碼長度最多可達 128 個字元。 使用盡可能長且複雜的密碼。
使用適用於 SQL Server 容器的 WSL 新增永續性記憶體
您可以建立資料卷,如 中所述掛載主機目錄作為資料卷。
例如,執行下列命令來設定位於 /var/opt/mssql/
sql_volume
的磁碟區。
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
-e "MSSQL_PID=Developer" -e "MSSQL_AGENT_ENABLED=true" \
-p 14333:1433 --name sqlcontainerwsl --hostname sqlcontainerwsl \
-v sql_volume:/var/opt/mssql/ \
-d mcr.microsoft.com/mssql/server:2022-latest
即使您執行 wsl --terminate
命令,資料也不會遺失。 當您再次啟動 WSL 並執行 docker run
命令以使用 sql_volume
磁碟區進行部署時,它仍然保留所有數據完好無損。
如果您想要刪除保存的磁碟區,請確定使用磁碟區的容器已停止並移除,然後執行下列命令。
docker volume rm sql_volume
備註
除了相依於叢集堆疊的商務持續性功能之外,您應該能夠針對開發目的設定 Linux 上 SQL Server 支援的大部分功能。 WSL 不支持這些功能,例如 Pacemaker 或 HPE Serviceguard。
如需 Linux 上 SQL Server 不支援的功能完整清單,請參閱 Linux 上的sql Server 2022 版本和支援的功能。
以本地連線
下列步驟會使用 sqlcmd 在本機連接到您的新 SQL Server 執行個體。
謹慎
您的密碼應遵循 SQL Server 預設 密碼原則。 根據預設,密碼長度必須至少為8個字元,且包含下列四個集合中的三個字元:大寫字母、小寫字母、基底10位數和符號。 密碼長度最多可達 128 個字元。 使用盡可能長且複雜的密碼。
使用 SQL Server 名稱的參數執行 sqlcmd sqlcmd
-S
、使用者名稱(-U
),以及密碼 (-P
)。 在本教學課程中,您將在本機進行連線,因此伺服器名稱是localhost
。 用戶名稱是sa
,密碼是您在安裝期間為sa
帳戶提供的密碼。sqlcmd -S localhost -U sa -P '<password>'
注意
較新版本的 sqlcmd 預設為安全的。 如需連線加密的詳細資訊,請參閱 適用於 Windows 的 sqlcmd 公用程式,以及 適用於 Linux 和 macOS 的 sqlcmd 連線。 如果連線不成功,您可以將 [
-No
] 選項新增至 sqlcmd,以指定加密是選擇性的,而不是必要的。您可以省略命令列上的密碼,系統將提示您輸入密碼。
如果您稍後決定從遠端連線,請指定
-S
參數的計算機名稱或IP位址,並確定防火牆上已開啟埠 1433。如果成功,您應該會看到 sqlcmd 命令提示字元:
1>
。如果您收到連線失敗,請先嘗試從錯誤訊息診斷問題。 然後檢閱 連線疑難解答建議。
建立和查詢數據
下列各節將逐步引導您使用 sqlcmd 來建立新的資料庫、新增數據,以及執行簡單的查詢。
如需撰寫 Transact-SQL 語句和查詢的詳細資訊,請參閱 教學課程:撰寫 Transact-SQL 語句。
建立新的資料庫
下列步驟會建立名為 TestDB
的新資料庫。
在 sqlcmd 命令提示字元中,貼上下列 Transact-SQL 命令以建立測試資料庫:
CREATE DATABASE TestDB;
在下一行中,撰寫查詢以傳回伺服器上所有資料庫的名稱:
SELECT Name FROM sys.databases;
前兩個命令不會立即執行。 您必須在新行上輸入
GO
,才能執行先前的命令:GO
插入數據
接下來,建立新的數據表,dbo.Inventory
,然後插入兩個新的數據列。
從 sqlcmd 命令提示字元,將上下文切換至新的
TestDB
資料庫:USE TestDB;
建立名為
dbo.Inventory
的新資料表:CREATE TABLE dbo.Inventory ( id INT, name NVARCHAR (50), quantity INT, PRIMARY KEY (id) );
將資料插入新資料表:
INSERT INTO dbo.Inventory VALUES (1, 'banana', 150); INSERT INTO dbo.Inventory VALUES (2, 'orange', 154);
輸入
GO
以執行先前的命令:GO
選取數據
現在,執行查詢以從 dbo.Inventory
數據表傳回數據。
從 sqlcmd 命令提示字元中,輸入一個查詢,返回
dbo.Inventory
資料表中數量大於 152 的資料列:SELECT * FROM dbo.Inventory WHERE quantity > 152;
執行命令:
GO
退出 sqlcmd 命令提示字元
若要結束 sqlcmd 工作階段,請輸入 QUIT
:
QUIT
效能最佳做法
在 Linux 上安裝 SQL Server 之後,請檢閱設定 Linux 和 SQL Server 的最佳做法,以改善生產案例的效能。 如需詳細資訊,請參閱 Linux 上的 SQL Server 效能最佳做法和設定指導方針。
跨平台數據工具
除了 sqlcmd之外,您還可以使用下列跨平臺工具來管理 SQL Server:
工具 | 描述 |
---|---|
Azure Data Studio | 跨平臺 GUI 資料庫管理公用程式。 |
Visual Studio Code | 使用 mssql 擴充功能執行 Transact-SQL 語句的跨平臺 GUI 程式代碼編輯器。 |
PowerShell Core | 以 Cmdlet 為基礎的跨平臺自動化和組態工具。 |
mssql-cli | 用於執行 Transact-SQL 命令的跨平臺命令行介面。 |
從 Windows 連線
Windows 上的 SQL Server 工具會以連線到任何遠端 SQL Server 實例的方式連線到 Linux 上的 SQL Server 實例。
如果您有可連線到 Linux 計算機的 Windows 計算機,請從執行 sqlcmd 的 Windows 命令提示字元,嘗試本主題中的相同步驟。 您必須使用目標 Linux 計算機名稱或 IP 位址,而不是 localhost
,並確定 SQL Server 計算機上已開啟 TCP 連接埠 1433。 如果您從 Windows 連線時發生任何問題,請參閱 連線疑難解答建議。
如需在 Windows 上執行但連線到 Linux 上的 SQL Server 的其他工具,請參閱:
其他部署案例
如需其他安裝案例,請參閱下列資源:
- 升級:瞭解如何升級Linux上現有的SQL Server 安裝
- 卸載:卸載 Linux 上的 SQL Server
- 自動安裝:瞭解如何在沒有提示的情況下編寫安裝腳本
- 離線安裝:瞭解如何手動下載套件以進行離線安裝
如需常見問題的解答,請參閱 Linux 上的 SQL Server 常見問題。
相關內容
貢獻於 SQL 文件的製作
您知道自己可以編輯 SQL 內容嗎? 如果您這樣做,不僅有助於改善我們的文件,而且您也會被譽為頁面的貢獻者並獲得認可。
如需詳細資訊,請參閱 如何貢獻 SQL Server 文件