Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server — Linux
В этом кратком руководстве вы используете Docker для выгрузки и запуска образа контейнера SQL Server 2017 (14.x) Linux, mssql-server-linux. Затем вы сможете подключиться с помощью sqlcmd, чтобы создать первую базу данных и выполнять запросы.
Дополнительные сведения о поддерживаемых платформах см. в заметках о выпуске SQL Server 2017 для Linux.
Предупреждение
При остановке и удалении контейнера данные SQL Server в контейнере удаляются окончательно. Дополнительные сведения о сохранении данных, создании и копировании файла резервной копии из контейнера или использовании метода сохраняемости данных контейнера.
В этом кратком руководстве создаются контейнеры SQL Server 2017 (14.x). Если вы предпочитаете создавать контейнеры Linux для разных версий SQL Server, ознакомьтесь с версиями этой статьи для SQL Server 2019 (15.x) или SQL Server 2022 (16.x) этой статьи.
В этом кратком руководстве вы используете Docker для извлечения и запуска образа контейнера Linux SQL Server 2019 (15.x), mssql-server-linux. Затем вы сможете подключиться с помощью sqlcmd, чтобы создать первую базу данных и выполнять запросы.
Дополнительные сведения о поддерживаемых платформах см. в заметках о выпуске SQL Server 2019 для Linux.
Предупреждение
При остановке и удалении контейнера данные SQL Server в контейнере удаляются окончательно. Дополнительные сведения о сохранении данных, создании и копировании файла резервной копии из контейнера или использовании метода сохраняемости данных контейнера.
В этом кратком руководстве создаются контейнеры SQL Server 2019 (15.x). Если вы хотите создать контейнеры на Linux для других версий SQL Server, ознакомьтесь с версиями этой статьи для SQL Server 2017 (14.x) или SQL Server 2022 (16.x).
В этом кратком руководстве вы используете Docker для скачивания и запуска образа контейнера SQL Server 2022 (16.x) Linux, mssql-server-linux. Затем вы сможете подключиться с помощью sqlcmd, чтобы создать первую базу данных и выполнять запросы.
Для получения дополнительной информации о поддерживаемых платформах смотрите заметки о выпуске для SQL Server 2022 на Linux.
Предупреждение
При остановке и удалении контейнера данные SQL Server в контейнере удаляются окончательно. Дополнительные сведения о сохранении данных, создании и копировании файла резервной копии из контейнера или использовании метода сохраняемости данных контейнера.
В этом кратком руководстве создаются контейнеры SQL Server 2022 (16.x). Если вы хотите создать контейнеры на Linux для других версий SQL Server, ознакомьтесь с версиями этой статьи SQL Server 2017 (14.x) или SQL Server 2019 (15.x).
Этот образ состоит из SQL Server под управлением Linux на основе Ubuntu. Он может использоваться с Docker Engine версии 1.8 или более новой на Linux.
Начиная с SQL Server 2022 (16.x) CU 14 и SQL Server 2019 (15.x) CU 28, образы контейнеров включают новый пакет mssql-tools18 . Предыдущий каталог /opt/mssql-tools/bin
отменяется. Новый каталог для средств /opt/mssql-tools18/bin
Microsoft ODBC 18 соответствует последнему предложению инструментов. Дополнительные сведения об изменениях и улучшениях безопасности см. в статье Выпущен ODBC Driver 18.0 для SQL Server.
В примерах этой статьи используются команды docker
. Однако большинство этих команд также работают с Podman. Podman предоставляет интерфейс командной строки, аналогичный подсистеме Docker. Дополнительные сведения о Podman см. здесь.
Внимание
Sqlcmd в настоящее время не поддерживает MSSQL_PID
параметр при создании контейнеров. Если вы используете инструкции sqlcmd в этом кратком руководстве, вы создадите контейнер с версией Developer SQL Server. Используйте инструкции по интерфейсу командной строки (CLI), чтобы создать контейнер с помощью выбранной лицензии. Дополнительные сведения см. в статье "Развертывание и подключение к контейнерам SQL Server Linux".
Предварительные условия
- Docker Engine 1.8 и более поздних версий на любом поддерживаемом дистрибутиве Linux. Дополнительные сведения см. в разделе Установка Docker.
- Дополнительные сведения о требованиях к оборудованию и поддержке процессора см. в статье SQL Server 2016 и 2017: требования к оборудованию и программному обеспечению
- Дополнительные сведения о требованиях к оборудованию и поддержке процессора см. в статье SQL Server 2019: требования к оборудованию и программному обеспечению
- Дополнительные сведения о требованиях к оборудованию и поддержке процессора см. в статье SQL Server 2022: требования к оборудованию и программному обеспечению
Драйвер хранилища Docker
overlay2
. По умолчанию этот драйвер используется большинством пользователей. Если вы не используете этот поставщик хранилища и хотите изменить его, см. инструкции и предупреждения в документации по настройке overlay2 для Docker.Установите последнюю версию sqlcmd на узле Docker.
Не менее 2 ГБ места на диске.
Не менее 2 ГБ ОЗУ.
Извлеките и запустите на Linux контейнерный образ SQL Server
Прежде чем начать следующие действия, убедитесь, что вы выбрали предпочтительную оболочку (bash, PowerShell или cmd) в верхней части этой статьи.
Для команд Bash в этой статье используется sudo
. Если вы не хотите использовать sudo
для запуска Docker, можно настроить группу docker
и добавить пользователей в эту группу. Дополнительные сведения см. в статье Действия после установки для Linux.
Извлечение образа контейнера из реестра
Загрузите образ контейнера SQL Server 2017 (14.x) для Linux из реестра контейнеров Microsoft.
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). Если вы хотите создать контейнеры на Linux для других версий SQL Server, ознакомьтесь с версиями этой статьи для SQL Server 2019 (15.x) или SQL Server 2022 (16.x).
Предыдущая команда извлекает последнюю версию образа контейнера SQL Server 2017 (14.x) на Linux. Если вы хотите извлечь конкретный образ, добавьте после двоеточия название метки, например mcr.microsoft.com/mssql/server:2017-GA-ubuntu
. Чтобы просмотреть все доступные изображения, см. Реестр артефактов Microsoft.
Запуск контейнера
Чтобы запустить образ контейнера на Linux с помощью Docker, выполните следующую команду в оболочке bash или в командной строке 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. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли. Если эти требования к паролям не выполнены, контейнер не может настроить SQL Server и перестать работать. Журнал ошибок можно проверить с помощью docker logs
команды.
По умолчанию в этом кратком руководстве создается контейнер с редакцией SQL Server для разработчика. Процесс запуска производственных версий в контейнерах немного отличается. Дополнительные сведения см. в разделе Запуск производственных образов контейнеров.
Следующая таблица содержит описание параметров в предыдущем примере 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 -a
docker ps -a
docker 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
. Если в столбцеSTATUS
для вашего контейнера SQL Server указаноExited
, см. статью Устранение неполадок контейнеров Docker SQL Server. Сервер будет готов к подключению, когда журналы ошибок 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
равными позволяет легко идентифицировать целевой контейнер.В качестве последнего шага измените пароль SA в рабочей среде, так как
MSSQL_SA_PASSWORD
он отображается в выходных данных и хранится вps -eax
переменной среды с тем же именем.
Извлеките и запустите образ контейнера SQL Server для Linux
Прежде чем начать следующие действия, убедитесь, что вы выбрали предпочтительную оболочку (bash, PowerShell или cmd) в верхней части этой статьи.
Для команд Bash в этой статье используется sudo
. Если вы не хотите использовать sudo
для запуска Docker, можно настроить группу docker
и добавить пользователей в эту группу. Дополнительные сведения см. в статье Действия после установки для Linux.
Извлечение контейнера из реестра
Извлеките образ контейнера SQL Server 2019 (15.x) из реестра контейнеров Microsoft.
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). Если вы хотите создать контейнеры на Linux для других версий SQL Server, ознакомьтесь с версиями этой статьи для SQL Server 2017 (14.x) или SQL Server 2022 (16.x).
Предыдущая команда извлекает последнюю версию образа контейнера SQL Server 2019 (15.x) на Linux. Если вы хотите извлечь конкретный образ, добавьте после двоеточия название метки, например mcr.microsoft.com/mssql/server:2019-GA-ubuntu
. Чтобы просмотреть все доступные изображения, см. Реестр артефактов Microsoft.
Запуск контейнера
Чтобы запустить образ контейнера на Linux с помощью Docker, выполните следующую команду в оболочке bash или в командной строке 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. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 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. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 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 -a
docker ps -a
docker 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
. Если в столбцеSTATUS
вашего контейнера SQL Server отображается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
равными позволяет легко идентифицировать целевой контейнер.В качестве последнего шага измените пароль SA в рабочей среде, так как
MSSQL_SA_PASSWORD
он отображается в выходных данных и хранится вps -eax
переменной среды с тем же именем.
Извлечение и запуск образа контейнера SQL Server на Linux
Прежде чем начать следующие действия, убедитесь, что вы выбрали предпочтительную оболочку (bash, PowerShell или cmd) в верхней части этой статьи.
Для команд Bash в этой статье используется sudo
. Если вы не хотите использовать sudo
для запуска Docker, можно настроить группу docker
и добавить пользователей в эту группу. Дополнительные сведения см. в статье Действия после установки для Linux.
Извлечение образа контейнера из реестра
Извлеките образ контейнера SQL Server 2022 (16.x) для Linux из контейнерного реестра Microsoft.
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). Если вы хотите создать контейнеры на Linux для других версий SQL Server, ознакомьтесь с версиями этой статьи SQL Server 2017 (14.x) или SQL Server 2019 (15.x).
Предыдущая команда извлекает последнюю версию образа контейнера SQL Server 2022 (16.x) на Linux. Если вы хотите извлечь конкретный образ, добавьте после двоеточия название метки, например mcr.microsoft.com/mssql/server:2022-GA-ubuntu
. Чтобы просмотреть все доступные изображения, см. Реестр артефактов Microsoft.
Запуск контейнера
Чтобы запустить образ контейнера на Linux с помощью Docker, выполните следующую команду в оболочке bash или в командной строке 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. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли. Если эти требования к паролям не выполнены, контейнер не может настроить SQL Server и перестать работать. Журнал ошибок можно проверить с помощью docker logs
команды.
По умолчанию в этом кратком руководстве создается контейнер с редакцией Developer SQL Server. Процесс запуска производственных версий в контейнерах немного отличается. Дополнительные сведения см. в разделе Запуск производственных контейнерных образов.
Следующая таблица содержит описание параметров в предыдущем примере 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 указанную вами переменную среды MSSQL_SA_PASSWORD
можно обнаружить, запустив echo $MSSQL_SA_PASSWORD
в контейнере. В целях безопасности необходимо изменить sa
пароль в рабочей среде.
Выберите надежный пароль, используемый для учетной
sa
записи. Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 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. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Последние версии sqlcmd по умолчанию защищены. Дополнительные сведения о шифровании подключения см. в утилите sqlcmd для Windows и подключении с помощью sqlcmd для Linux и macOS. Если подключение не выполнено, можно добавить параметр
-No
, чтобы указать, что шифрование является необязательным, а не обязательным.
Отключение учетной записи SA в качестве рекомендации
Внимание
Эти учетные данные потребуются для последующих шагов. Обязательно запишите идентификатор пользователя и пароль, которые вы вводите здесь.
При подключении к экземпляру SQL Server с помощью учетной записи системного администратора (sa
) в первый раз после установки важно выполнить эти действия, а затем немедленно отключить sa
учетную запись в качестве рекомендации по безопасности.
Создайте новую учетную запись и назначьте её членом роли сервера sysadmin.
В зависимости от того, есть ли у вас контейнерное или неконтейнерное развертывание, включите проверку подлинности Windows и создайте новую учетную запись Windows и добавьте её в роль сервера sysadmin.
В противном случае создайте имя входа с помощью проверки подлинности SQL Server и добавьте его в роль сервера sysadmin .
Подключитесь к экземпляру SQL Server, используя новый логин, который вы создали.
sa
Отключите учетную запись, как рекомендуется для обеспечения безопасности.
Просмотр списка контейнеров
Для просмотра ваших контейнеров Docker используйте команду
docker ps
.docker ps -a
docker ps -a
docker 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
. Если в столбцеSTATUS
для вашего контейнера SQL Server отображаетсяExited
, см. раздел «Устранение неполадок контейнеров Docker SQL Server». Сервер будет готов к подключению, когда журналы ошибок 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 по умолчанию защищены. Дополнительные сведения о шифровании подключений см. в программе sqlcmd для Windows и подключении с помощью sqlcmd для Linux и macOS. Если подключение не выполнено, можно добавить параметр
-No
, чтобы указать, что шифрование является необязательным, а не обязательным.Вы можете опустить пароль в командной строке. В этом случае вы получите приглашение для его ввода. Например:
/opt/mssql-tools/bin/sqlcmd -S localhost -U <userid>
В контейнере подключитесь локально с помощью sqlcmd, используя полный путь.
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid> -P "<password>"
Последние версии sqlcmd по умолчанию защищены. Дополнительные сведения о шифровании подключений см. в программе sqlcmd для Windows и подключении с помощью sqlcmd для Linux и macOS. Если подключение не выполнено, можно добавить параметр
-No
, чтобы указать, что шифрование является необязательным, а не обязательным.Вы можете опустить пароль в командной строке. В этом случае вы получите приглашение для его ввода. Например:
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid>
Оказавшись внутри контейнера, подключитесь локально с помощью sqlcmd, используя полный путь.
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid> -P "<password>"
Последние версии sqlcmd по умолчанию защищены. Дополнительные сведения о шифровании подключений см. в разделе Утилита sqlcmd для Windows и Подключение с помощью sqlcmd для Linux и macOS. Если подключение не выполнено, можно добавить параметр
-No
, чтобы указать, что шифрование является необязательным, а не обязательным.Вы можете опустить пароль в командной строке. В этом случае вы получите приглашение для его ввода. Например:
/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;
Создайте таблицу
Inventory
:CREATE 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
строки, где количество превышает 152:SELECT * FROM Inventory WHERE quantity > 152;
Выполните команду:
GO
Выход из командной строки sqlcmd
Чтобы завершить сеанс sqlcmd, введите
QUIT
:QUIT
Чтобы выйти из интерактивной командной строки в контейнере, введите команду
exit
. Контейнер продолжит работать после выхода из интерактивной оболочки bash.
Подключение извне контейнера
Подключиться к экземпляру SQL Server на компьютере Docker можно также с помощью любого внешнего инструмента в macOS, Windows или Linux, поддерживающего подключения SQL. Внешнее средство использует IP-адрес для хост-компьютера.
В следующем примере используется sqlcmd вне контейнера для подключения к SQL Server, запущенному в контейнере. В этом примере предполагается, что в среде вне контейнера, из которой происходит подключение, уже установлены средства командной строки SQL Server. При использовании других средств действует тот же принцип, но процесс подключения является уникальным для каждого средства.
Найдите IP-адрес для хост-компьютера контейнера, используя
ifconfig
илиip addr
.В этом примере установите средство sqlcmd на клиентском компьютере. Дополнительные сведения см. в служебной программе sqlcmd или установке средств командной строки SQL Server sqlcmd и bcp в Linux.
Запустите 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. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Выполните команды языка Transact-SQL. По завершении введите
QUIT
.
Другие распространенные средства для подключения к SQL Server:
- Расширение SQL Server для Visual Studio Code
- Управление SQL Server на Linux с помощью SQL Server Management Studio в Windows
- Что такое Azure Data Studio?
- mssql-cli (предварительная версия).
- Управление SQL Server на Linux с помощью PowerShell Core
Удалите ваш контейнер
Чтобы удалить контейнер SQL Server, используемый в этом руководстве, выполните следующие команды.
docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1
Демонстрация возможностей Docker
После завершения работы с образом контейнера SQL Server Linux для Docker может потребоваться узнать, как Docker используется для улучшения разработки и тестирования. Следующий видеоролик рассказывает о том, как можно использовать Docker в сценарии непрерывной интеграции и развертывания.
Связанные задачи
Связанный контент
- Восстановление базы данных SQL Server в контейнере Linux
- Устранение неполадок контейнеров Docker SQL Server
- репозиторий mssql-docker GitHub
Примите участие в разработке документации по SQL
Знаете ли вы, что содержимое SQL можно изменить самостоятельно? Это не только улучшит нашу документацию, но и даст вам статус участника в создании этой страницы.
Дополнительные сведения см. в документации по редактированию Microsoft Learn.