共用方式為


快速入門:在適用於 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 個字元。 使用盡可能長且複雜的密碼。

  1. 使用 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。

  2. 如果成功,您應該會看到 sqlcmd 命令提示字元:1>

  3. 如果您收到連線失敗,請先嘗試從錯誤訊息診斷問題。 然後檢閱 連線疑難解答建議

建立和查詢數據

下列各節將逐步引導您使用 sqlcmd 來建立新的資料庫、新增數據,以及執行簡單的查詢。

如需撰寫 Transact-SQL 語句和查詢的詳細資訊,請參閱 教學課程:撰寫 Transact-SQL 語句

建立新的資料庫

下列步驟會建立名為 TestDB的新資料庫。

  1. sqlcmd 命令提示字元中,貼上下列 Transact-SQL 命令以建立測試資料庫:

    CREATE DATABASE TestDB;
    
  2. 在下一行中,撰寫查詢以傳回伺服器上所有資料庫的名稱:

    SELECT Name
    FROM sys.databases;
    
  3. 前兩個命令不會立即執行。 您必須在新行上輸入 GO,才能執行先前的命令:

    GO
    

插入數據

接下來,建立新的數據表,dbo.Inventory,然後插入兩個新的數據列。

  1. sqlcmd 命令提示字元,將上下文切換至新的 TestDB 資料庫:

    USE TestDB;
    
  2. 建立名為 dbo.Inventory的新資料表:

    CREATE TABLE dbo.Inventory
    (
        id INT,
        name NVARCHAR (50),
        quantity INT,
        PRIMARY KEY (id)
    );
    
  3. 將資料插入新資料表:

    INSERT INTO dbo.Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO dbo.Inventory
    VALUES (2, 'orange', 154);
    
  4. 輸入 GO 以執行先前的命令:

    GO
    

選取數據

現在,執行查詢以從 dbo.Inventory 數據表傳回數據。

  1. sqlcmd 命令提示字元中,輸入一個查詢,返回 dbo.Inventory 資料表中數量大於 152 的資料列:

    SELECT *
    FROM dbo.Inventory
    WHERE quantity > 152;
    
  2. 執行命令:

    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 文件