Краткое руководство. Установка 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 символов. Используйте пароли, которые являются максимально длинными и сложными.
Запустите 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 открыт в брандмауэре.В случае успешного выполнения у вас должна открыться командная строка 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
Рекомендации по производительности
После установки 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 Management Studio (SSMS)
- Windows PowerShell
- Инструменты работы с данными SQL Server (SSDT)
Другие сценарии развертывания
Дополнительные сведения о других сценариях установки см. в следующих ресурсах:
- обновление: Узнайте, как обновить имеющуюся установку SQL Server на Linux.
- удаление: удаление SQL Server в Linux
- автоматическая установка: научитесь скриптовать установку без запроса параметров
- автономная установка: Узнайте, как вручную скачать пакеты для автономной установки
Ответы на часто задаваемые вопросы см. в SQL Server на Linux FAQ.
Связанное содержимое
Вносите вклад в документацию по SQL
Знаете ли вы, что вы можете самостоятельно редактировать содержимое SQL? При этом вы не только помогаете улучшить нашу документацию, но и получаете признание в качестве участника страницы.
Дополнительные сведения см. в статье Как внести свой вклад в документацию по SQL Server