Развертывание SQL Azure для пограничных вычислений с помощью Docker
Внимание
Azure SQL Edge будет прекращена 30 сентября 2025 г. Дополнительные сведения и параметры миграции см. в уведомлении о выходе на пенсию.
Примечание.
Azure SQL Edge больше не поддерживает платформу ARM64.
Это краткое руководство описывает использование Docker для извлечения и запуска образа контейнера SQL Azure для пограничных вычислений. Затем мы подключимся при помощи sqlcmd для создания первой базы данных и выполнения запросов.
Этот образ состоит из SQL Edge на основе Ubuntu 18.04. Он может использоваться с Dосker Engine 1.8 и более поздних версий на Linux.
Контейнеры SQL Azure для пограничных вычислений не поддерживаются на следующих платформах для рабочих нагрузок:
- Windows
- macOS
- Azure IoT Edge для Linux в Windows (EFLOW)
Необходимые компоненты
- Docker Engine 1.8 и более поздних версий на любом поддерживаемом дистрибутиве Linux. Дополнительные сведения см. в разделе Установка Docker. Так как образы SQL Edge основаны на Ubuntu 18.04, мы рекомендуем использовать узел Docker Ubuntu 18.04.
- Драйвер хранилища overlay2 Docker. По умолчанию он используется большинством пользователей. Если вы обнаружите, что не используете этот поставщик хранилища и хотите изменить его, ознакомьтесь с инструкциями и предупреждениями в документации Docker по настройке наложения2.
- Не менее 10 ГБ места на диске.
- Не менее 1 ГБ ОЗУ.
- Требования к оборудованию для SQL Azure для пограничных вычислений.
Примечание.
Для команд Bash в этой статье используется sudo
. Если вы не хотите использовать sudo
для запуска Docker, можно настроить группу Docker и добавить пользователей в эту группу. Дополнительные сведения см. в статье Действия после установки для Linux.
Извлечение и запуск образа контейнера
Извлеките образ контейнера SQL Azure для пограничных вычислений из Реестра контейнеров Майкрософт.
sudo docker pull mcr.microsoft.com/azure-sql-edge:latest
Предыдущая команда извлекает последний образ контейнера SQL Edge. Чтобы просмотреть все доступные образы, см . страницу центра Docker azure-sql-edge.
Чтобы запустить образ контейнера с помощью Docker, используйте следующую команду из оболочки Bash:
Запустите экземпляр SQL Azure, работающий в качестве выпуска Developer:
sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=<password>' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
Запустите экземпляр SQL Azure, работающий в качестве выпуска Premium:
sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Premium' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
Внимание
Пароль должен соответствовать политике паролей ядра Microsoft База данных SQL по умолчанию, в противном случае контейнер не может настроить модуль База данных SQL и перестанет работать. По умолчанию пароль должен быть не короче восьми символов и содержать символы трех из следующих четырех групп: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Проверить журнал ошибок можно, выполнив команду docker logs.
В следующей таблице приведено описание параметров в предыдущих
docker run
примерах:Параметр Описание -e "ACCEPT_EULA=Y" Присвойте переменной ACCEPT_EULA любое значение, чтобы подтвердить свое согласие с лицензионным соглашением. Обязательный параметр для образа SQL Edge. -e "MSSQL_SA_PASSWORD=<password>" Укажите собственный надежный пароль, который не менее восьми символов и соответствует требованиям к паролям. Обязательный параметр для образа SQL Edge. -p 1433:1433 Сопоставление TCP-порта среды узла (первое значение) с TCP-портом в контейнере (второе значение). В этом примере SQL Edge прослушивает TCP 14333 в контейнере и предоставляется порту 1433 на узле. --name azuresqledge Укажите свое имя для контейнера вместо сгенерированного случайным образом. При запуске нескольких контейнеров нельзя использовать одинаковые имена. -d Запустите контейнер в фоновом режиме (управляющая программа) Полный список всех переменных среды SQL Azure для пограничных вычислений см. в статье "Настройка AZURE SQL Edge с помощью переменных среды". Вы также можете использовать файл mssql.conf для настройки контейнеров SQL Edge.
Для просмотра ваших контейнеров Docker используйте команду
docker ps
.sudo docker ps -a
Если столбец STATUS отображает состояние "Вверх", SQL Edge выполняется в контейнере и прослушивает порт, указанный в столбце PORTS. Если столбец STATUS для контейнера SQL Edge отображается "Выход", см. раздел "Устранение неполадок" документации по Sql Edge Azure.
Параметр
-h
(имя узла) также полезен, но он не используется в этом руководстве для простоты. Он изменяет внутреннее имя контейнера на пользовательское значение. Это имя, возвращаемое в следующем запросе Transact-SQL:SELECT @@SERVERNAME, SERVERPROPERTY('ComputerNamePhysicalNetBIOS'), SERVERPROPERTY('MachineName'), SERVERPROPERTY('ServerName');
Установка параметров
-h
и--name
равными позволяет легко идентифицировать целевой контейнер.В качестве последнего шага измените пароль SA, так как
MSSQL_SA_PASSWORD
отображается в выходных данныхps -eax
и хранится в переменной среды с тем же именем. См. следующие действия.
Смена пароля администратора
Учетная запись SA обладает правами администратора на экземпляре SQL Azure для пограничных вычислений, создаваемом во время установки. После создания контейнера MSSQL_SA_PASSWORD
SQL Edge указанная переменная среды может быть обнаружена путем запуска echo $MSSQL_SA_PASSWORD
в контейнере. В целях безопасности смените пароль SA.
Назначьте для пользователя SA надежный пароль.
Используйте
docker exec
для запуска sqlcmd, чтобы изменить пароль с помощью Transact-SQL. В следующем примере замените старый пароль<old-password>
и новый пароль<new-password>
собственными паролями.sudo docker exec -it azuresqledge /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P "<old-password>" \ -Q 'ALTER LOGIN SA WITH PASSWORD="<new-password>"'
Подключение к службе SQL Azure для пограничных вычислений
В следующих шагах используется средство командной строки SQL Azure SQL Edge, sqlcmd в контейнере для подключения к SQL Edge.
Выполните команду
docker exec -it
, чтобы запустить интерактивную оболочку bash внутри запущенного контейнера. В следующем примере используется имя,azuresqledge
указанное параметром--name
при создании контейнера.sudo docker exec -it azuresqledge "bash"
После подключения в контейнере подключитесь локально с помощью sqlcmd. sqlcmd по умолчанию не указан в пути, поэтому необходимо указать полный путь.
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<password>"
Совет
Вы можете опустить пароль в командной строке. В этом случае вы получите приглашение для его ввода.
Если все сработает должным образом, вы перейдете к приглашению команды sqlcmd:
1>
.
Создание и запрос данных
В следующих разделах приведено пошаговое руководство по созданию базы данных, добавлению данных и запуску запроса с использованием sqlcmd и Transact-SQL.
Создание базы данных
Выполните следующие шаги, чтобы создать базу данных TestDB
.
В приглашении команды sqlcmd вставьте следующую команду Transact-SQL, чтобы создать тестовую базу данных:
CREATE DATABASE TestDB; GO
В следующей строке напишите запрос, который должен вернуть имена всех баз данных на сервере:
SELECT name from sys.databases; 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 Edge на компьютере Docker из любого внешнего средства Linux, Windows или macOS, поддерживающего подключения к SQL. Дополнительные сведения о подключении к контейнеру SQL Edge извне см. в статье Connect and Query Azure SQL Edge.
Удаление контейнера
Если вы хотите удалить контейнер SQL Edge, используемый в этом руководстве, выполните следующие команды:
sudo docker stop azuresqledge
sudo docker rm azuresqledge
Предупреждение
Остановка и удаление контейнера окончательно удаляет все данные SQL Edge в контейнере. Чтобы сохранить данные, создайте и скопируйте файл резервной копии за пределы контейнера или используйте метод постоянного хранения данных контейнера.