Подключение и выполнение запросов к SQL Azure для пограничных вычислений

Важно!

Azure SQL Edge больше не поддерживает платформу ARM64.

После развертывания контейнера в Azure SQL Edge можно подключиться к ядро СУБД из любого из следующих расположений:

  • Внутри контейнера
  • Из другого контейнера Docker, работающего на том же узле
  • С хост-компьютера
  • С любого другого клиентского компьютера в сети

Средства для подключения к SQL Azure для пограничных вычислений

Вы можете подключиться к экземпляру SQL Azure для пограничных вычислений с помощью одного из следующих стандартных средств:

Чтобы подключиться к ядро СУБД SQL Azure на сетевом компьютере, вам потребуется следующее:

  • IP-адрес или сетевое имя хост-компьютера. Это хост-компьютер, на котором работает контейнер SQL Azure для пограничных вычислений.

  • Сопоставление портов узла и контейнера SQL Azure для пограничных вычислений. Это сопоставление порта контейнера Docker с портом на узле. Внутри контейнера SQL Azure для пограничных вычислений всегда сопоставляется с портом 1433. При желании это значение можно изменить. Чтобы изменить номер порта, обновите параметры создания контейнера у модуля SQL Azure для пограничных вычислений в Azure IoT Edge. В приведенном ниже примере порт 1433 в контейнере сопоставляется с портом 1600 на узле.

    {
        "PortBindings": {
          "1433/tcp": [
            {
              "HostPort": "1600"
            }
          ]
        }
    }
    
  • Пароль системного администратора для экземпляра SQL Azure для пограничных вычислений. Это значение, указанное для переменной среды SA_PASSWORD во время развертывания SQL Azure для пограничных вычислений.

Подключение в ядро СУБД из контейнера

Инструменты командной строки SQL Server включены в образ контейнера SQL Azure для пограничных вычислений. Если подключиться к контейнеру с помощью интерактивной командной строки, инструменты можно будет запускать локально. Клиентские средства SQL недоступны на платформе ARM64.

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

    docker exec -it e69e056c702d /bin/bash
    

    Совет

    Указывать идентификатор контейнера полностью во всех случаях не требуется. Достаточно указать количество символов, необходимое для его уникальной идентификации. Соответственно, вместо полного идентификатора в этом примере можно использовать форму e6 или e69.

  2. Когда вы находитесь в контейнере, подключитесь локально с помощью sqlcmd. sqlcmd по умолчанию не указан в пути, поэтому необходимо указать полный путь.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourPassword>'
    
  3. После завершения работы с sqlcmd введите exit.

  4. Завершив работу с интерактивной командной строкой, введите exit. Контейнер продолжит работать после выхода из интерактивной оболочки bash.

Подключение к SQL Azure для пограничных вычислений из другого контейнера на том же узле

Поскольку два контейнера, работающие на одном узле, находятся в одной сети Docker, к ним можно легко получить доступ, используя имя контейнера и адрес порта для службы. Например, если вы подключаетесь к экземпляру SQL Azure edge из другого модуля Python (контейнера) на том же узле, вы можете использовать строка подключения, как показано ниже. (В этом примере предполагается, что SQL Azure для пограничных вычислений настроен так, чтобы прослушивать порт по умолчанию.)

import pyodbc
server = 'MySQLEdgeContainer' # Replace this with the actual name of your SQL Edge Docker container
username = 'sa' # SQL Server username
password = 'MyStrongestP@ssword' # Replace this with the actual SA password from your deployment
database = 'MyEdgeDatabase' # Replace this with the actual database name from your deployment. If you do not have a database created, you can use Master database.
db_connection_string = "Driver={ODBC Driver 17 for SQL Server};Server=" + server + ";Database=" + database + ";UID=" + username + ";PWD=" + password + ";"
conn = pyodbc.connect(db_connection_string, autocommit=True)

Подключение к SQL Azure для пограничных вычислений с другого сетевого компьютера

Возможно, вам потребуется подключиться к экземпляру Azure SQL для пограничных вычислений с другого компьютера в сети. Для этого используйте IP-адрес узла Docker и порт узла, с которым сопоставлен контейнер Azure SQL для пограничных вычислений. Например, если IP-адрес узла 192.168.2.121Docker равен ip-адресу, а контейнер Sql Azure SQL Edge сопоставляется с портом узла 1600, то адрес сервера для экземпляра SQL Azure Edge будет.192.168.2.121,1600 Обновленный скрипт Python:

import pyodbc
server = '192.168.2.121,1600' # Replace this with the actual name or IP address of your SQL Edge Docker container
username = 'sa' # SQL Server username
password = 'MyStrongestP@ssword' # Replace this with the actual SA password from your deployment
database = 'MyEdgeDatabase' # Replace this with the actual database name from your deployment. If you do not have a database created, you can use Master database.
db_connection_string = "Driver={ODBC Driver 17 for SQL Server};Server=" + server + ";Database=" + database + ";UID=" + username + ";PWD=" + password + ";"
conn = pyodbc.connect(db_connection_string, autocommit=True)

О том, как подключиться к экземпляру SQL Azure для пограничных вычислений с помощью службы SQL Server Management Studio, работающей на компьютере Windows, см. в статье об SQL Server Management Studio.

Чтобы подключиться к экземпляру SQL Azure Edge с помощью Visual Studio Code на компьютере с Windows, macOS или Linux, см . статью Visual Studio Code.

Чтобы подключиться к экземпляру Sql Azure Edge с помощью Azure Data Studio на компьютере с Windows, macOS или Linux, см. статью Azure Data Studio.

Следующие шаги