Поделиться через


Краткое руководство. Установка SQL Server и создание базы данных в подсистеме Windows для Linux (WSL 2)

применимо:SQL Server — Linux

Подсистема Windows для Linux (WSL) — это функция в Windows, которая позволяет запускать среду Linux непосредственно на компьютере Windows без необходимости загрузки виртуальной машины или двойной загрузки. WSL обеспечивает простой и продуктивный интерфейс для разработчиков, которые хотят одновременно использовать Windows и Linux. Дополнительные сведения см. в статье Что такое подсистема Windows для Linux?

SQL Server в WSL предназначен только для разработки

SQL Server в WSL 2 предназначен исключительно для разработки и не поддерживается для продукционных рабочих нагрузок. Мы рекомендуем запустить SQL Server в средах WSL на одной из поддерживаемых платформ , как описано, для версии SQL Server, которую вы планируете запустить.

Для любых проблем, связанных с поддержкой, вы можете получить поддержку от Корпорации Майкрософт.

Начало работы с SQL Server в WSL 2

Существует два способа начать работу с SQL Server в WSL 2:

  • Установите SQL Server как службу systemd, которую можно управлять с помощью команд systemctl. Убедитесь, что вы включите systemd в WSL. Дополнительные сведения см. в разделе Как включить systemd.

  • Развертывание контейнеров SQL Server в WSL. Для этого варианта необходимо сначала установить в WSL среду контейнеров Linux, например Docker или Podman, а затем развернуть контейнеры SQL Server.

Необходимые условия

Установите WSL 2. Убедитесь, что вы работаете под управлением Windows 10 версии 2004 или более поздней версии (сборка 19041 и выше) или Windows 11. Чтобы установить WSL, откройте командную строку PowerShell или Windows в режиме администратора и выполните следующую команду:

wsl --install

Подробные инструкции см. в статье Установка Linux в Windows с помощью WSL. Сведения о настройке среды WSL для разработки см. в настройке среды разработки WSL.

Установка SQL Server в WSL

В этом разделе описаны шаги по настройке дистрибутива Linux в WSL и установке SQL Server в этом дистрибутиве Linux.

Выбор дистрибутива 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

В этом кратком руководстве по установке установите Ubuntu 22.04, а затем SQL Server 2022 в эту операционную систему.

Чтобы установить Ubuntu 22.04, выполните следующую команду. Запишите учетную запись пользователя UNIX и пароль. В этом примере используйте wsluser в качестве имени пользователя.

wsl --install -d Ubuntu-22.04

Вы должны увидеть выходные данные, аналогичные следующему примеру. В конце должно быть показано, что вы вошли в оболочку bash Ubuntu 22.04.

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-адреса

Чтобы определить IP-адрес для подключения к sql Server Management Studio (SSMS), выполните команду 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

Развертывание контейнеров SQL Server в WSL

Чтобы развернуть контейнеры в WSL, сначала необходимо установить подсистему контейнеров Linux, например Docker. Дополнительные сведения см. в статье Начало работы с удаленными контейнерами Docker в WSL. После установки подсистемы 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 . По умолчанию пароль должен содержать по крайней мере восемь символов и содержать символы из трех из следующих четырех наборов: прописные буквы, строчные буквы, цифры base-10 и символы. Пароли могут содержать до 128 символов. Используйте пароли, которые являются максимально длинными и сложными.

Добавление постоянного хранилища с помощью WSL для контейнеров SQL Server

Тома данных можно создать, как описано в подключить каталог узла в качестве тома данных.

Например, выполните следующую команду, чтобы настроить том с именем sql_volume, расположенный в /var/opt/mssql/.

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

Замечания

Вы должны иметь возможность настроить большинство функций, поддерживаемых SQL Server в Linux для целей разработки, за исключением функций непрерывности бизнес-процессов, которые зависят от стеков кластеризации. Эти функции, такие как Pacemaker или HPE Serviceguard, не поддерживаются в WSL.

Полный список неподдерживаемых функций SQL Server в Linux см. в разделе Редакции и поддерживаемые функции SQL Server 2022 в Linux.

Подключитесь локально

Следующие шаги используют sqlcmd для локального подключения к новому экземпляру SQL Server.

Осторожность

Пароль должен соответствовать политике паролей по умолчанию для SQL Server . По умолчанию пароль должен содержать по крайней мере восемь символов и содержать символы из трех из следующих четырех наборов: прописные буквы, строчные буквы, цифры base-10 и символы. Пароли могут содержать до 128 символов. Используйте пароли, которые являются максимально длинными и сложными.

  1. Запустите sqlcmd с параметрами для имени SQL Server (-S), имени пользователя (-U) и пароля (-P). В этом руководстве вы связываетесь с сервером по локальной сети, поэтому имя сервера localhost. Имя пользователя sa, а пароль — это пароль, который вы указали для учетной записи sa во время установки.

    sqlcmd -S localhost -U sa -P '<password>'
    

    Заметка

    Более новые версии sqlcmd по умолчанию защищены. Дополнительные сведения о шифровании подключений см. в служебной программе sqlcmd для Windows и Подключении с помощью sqlcmd для Linux и macOS. Если подключение не выполнено, можно добавить параметр -No для sqlcmd, чтобы указать, что шифрование является необязательным, а не обязательным.

    Пароль можно пропустить в командной строке, чтобы появилось приглашение его ввести.

    Если позже вы решили удаленно подключиться, укажите имя компьютера или IP-адрес для параметра -S и убедитесь, что порт 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

Рекомендации по производительности

После установки SQL Server в Linux ознакомьтесь с рекомендациями по настройке Linux и SQL Server для повышения производительности рабочих сценариев. Дополнительные сведения см. в статье Рекомендации по производительности и рекомендации по настройке SQL Server в Linux.

Кроссплатформенные средства обработки данных

Помимо sqlcmd, можно использовать следующие кроссплатформенные средства для управления SQL Server:

Инструмент Описание
Azure Data Studio Кроссплатформенная программа управления базами данных GUI.
Visual Studio Code Кроссплатформенный редактор кода с графическим интерфейсом, который выполняет инструкции Transact-SQL с расширением mssql.
PowerShell Core Инструмент для кроссплатформенной автоматизации и конфигурирования, основанный на командлетах.
mssql-cli Кроссплатформенный интерфейс командной строки для выполнения команд Transact-SQL.

Подключение из Windows

Средства SQL Server в Windows подключаются к экземплярам SQL Server в Linux так же, как они подключаются к любому удаленному экземпляру SQL Server.

Если у вас есть компьютер с Windows, который может подключиться к компьютеру Linux, выполните те же действия, описанные в этом разделе, из командной строки Windows, в которой выполняется sqlcmd. Необходимо использовать целевое имя компьютера Linux или IP-адрес, а не localhost, и убедитесь, что tcp-порт 1433 открыт на компьютере SQL Server. Если у вас возникли проблемы с подключением из Windows, ознакомьтесь с рекомендациями по устранению неполадок подключения .

Другие средства, которые работают в Windows, но подключаются к SQL Server в Linux, см. в статье:

Другие сценарии развертывания

Дополнительные сведения о других сценариях установки см. в следующих ресурсах:

Ответы на часто задаваемые вопросы см. в SQL Server на Linux FAQ.

Вносите вклад в документацию по SQL

Знаете ли вы, что вы можете самостоятельно редактировать содержимое SQL? При этом вы не только помогаете улучшить нашу документацию, но и получаете признание в качестве участника страницы.

Дополнительные сведения см. в статье Как внести свой вклад в документацию по SQL Server