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


Развертывание 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.

Извлечение и запуск образа контейнера

  1. Извлеките образ контейнера SQL Azure для пограничных вычислений из Реестра контейнеров Майкрософт.

    sudo docker pull mcr.microsoft.com/azure-sql-edge:latest
    

    Предыдущая команда извлекает последний образ контейнера SQL Edge. Чтобы просмотреть все доступные образы, см . страницу центра Docker azure-sql-edge.

  2. Чтобы запустить образ контейнера с помощью 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.

  3. Для просмотра ваших контейнеров Docker используйте команду docker ps.

    sudo docker ps -a
    
  4. Если столбец STATUS отображает состояние "Вверх", SQL Edge выполняется в контейнере и прослушивает порт, указанный в столбце PORTS. Если столбец STATUS для контейнера SQL Edge отображается "Выход", см. раздел "Устранение неполадок" документации по Sql Edge Azure.

    Параметр -h (имя узла) также полезен, но он не используется в этом руководстве для простоты. Он изменяет внутреннее имя контейнера на пользовательское значение. Это имя, возвращаемое в следующем запросе Transact-SQL:

    SELECT @@SERVERNAME,
        SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
        SERVERPROPERTY('MachineName'),
        SERVERPROPERTY('ServerName');
    

    Установка параметров -h и --name равными позволяет легко идентифицировать целевой контейнер.

  5. В качестве последнего шага измените пароль SA, так как MSSQL_SA_PASSWORD отображается в выходных данных ps -eax и хранится в переменной среды с тем же именем. См. следующие действия.

Смена пароля администратора

Учетная запись SA обладает правами администратора на экземпляре SQL Azure для пограничных вычислений, создаваемом во время установки. После создания контейнера MSSQL_SA_PASSWORD SQL Edge указанная переменная среды может быть обнаружена путем запуска echo $MSSQL_SA_PASSWORD в контейнере. В целях безопасности смените пароль SA.

  1. Назначьте для пользователя SA надежный пароль.

  2. Используйте 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.

  1. Выполните команду docker exec -it, чтобы запустить интерактивную оболочку bash внутри запущенного контейнера. В следующем примере используется имя, azuresqledge указанное параметром --name при создании контейнера.

    sudo docker exec -it azuresqledge "bash"
    
  2. После подключения в контейнере подключитесь локально с помощью sqlcmd. sqlcmd по умолчанию не указан в пути, поэтому необходимо указать полный путь.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<password>"
    

    Совет

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

  3. Если все сработает должным образом, вы перейдете к приглашению команды sqlcmd: 1>.

Создание и запрос данных

В следующих разделах приведено пошаговое руководство по созданию базы данных, добавлению данных и запуску запроса с использованием sqlcmd и Transact-SQL.

Создание базы данных

Выполните следующие шаги, чтобы создать базу данных TestDB.

  1. В приглашении команды sqlcmd вставьте следующую команду Transact-SQL, чтобы создать тестовую базу данных:

    CREATE DATABASE TestDB;
    GO
    
  2. В следующей строке напишите запрос, который должен вернуть имена всех баз данных на сервере:

    SELECT name from sys.databases;
    GO
    

Вставка данных

Теперь создайте таблицу Inventory и вставьте две новых строки.

  1. В приглашении команды sqlcmd переключите контекст на новую базу данных TestDB:

    USE TestDB;
    
  2. Создайте таблицу Inventory:

    CREATE TABLE Inventory (
        id INT,
        name NVARCHAR(50),
        quantity INT
    );
    
  3. Вставьте данные в новую таблицу:

    INSERT INTO Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO Inventory
    VALUES (2, 'orange', 154);
    
  4. Введите GO, чтобы выполнить предыдущие команды:

    GO
    

Выбор данных

Теперь выполните запрос, чтобы вернуть данные из таблицы Inventory.

  1. В приглашении команды sqlcmd введите запрос, который должен вернуть из таблицы Inventory строки, где количество превышает 152:

    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. Выполните команду:

    GO
    

Выход из приглашения команды sqlcmd

  1. Чтобы завершить сеанс sqlcmd, введите QUIT:

    QUIT
    
  2. Чтобы выйти из интерактивной командной строки в контейнере, введите команду 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 в контейнере. Чтобы сохранить данные, создайте и скопируйте файл резервной копии за пределы контейнера или используйте метод постоянного хранения данных контейнера.