Conectar e consultar o SQL do Azure no Edge

Importante

O SQL do Azure no Edge encerrou o suporte à plataforma ARM64.

No Azure SQL Edge, depois de implantar um contêiner, você pode se conectar ao Mecanismo de Banco de Dados de qualquer um dos seguintes locais:

  • Dentro do contêiner
  • De outro contêiner do Docker em execução no mesmo host
  • No computador host
  • De qualquer outro computador cliente na rede

Ferramentas para se conectar ao SQL do Azure no Edge

Você pode se conectar a uma instância da instância do SQL do Azure no Edge de qualquer uma dessas ferramentas comuns:

  • sqlcmd: as ferramentas de cliente sqlcmd já estão incluídas na imagem de contêiner do Azure SQL Edge. Se você anexar a um contêiner em execução com um shell Bash interativo, poderá executar as ferramentas localmente. As ferramentas de cliente SQL não estão disponíveis na plataforma ARM64.
  • SQL Server Management Studio
  • Azure Data Studio
  • Visual Studio Code

Para se conectar a um Mecanismo de Banco de Dados do SQL Edge do Azure a partir de uma máquina de rede, você precisa do seguinte:

  • Endereço IP ou nome de rede do computador host: Esse é o computador host em que o contêiner do SQL do Azure no Edge está em execução.

  • Mapeamento de porta de host de contêiner do SQL do Azure no Edge: Esse é o mapeamento da porta de contêiner do Docker para uma porta no host. Dentro do contêiner, o SQL do Azure no Edge é sempre mapeado para a porta 1433. Você pode alterar isso se desejar. Para alterar o número da porta, atualize as Opções de criação do contêiner para o módulo do SQL do Azure no Edge no Azure IoT Edge. No exemplo a seguir, a porta 1433 no contêiner é mapeada para a porta 1600 no host.

    {
        "PortBindings": {
          "1433/tcp": [
            {
              "HostPort": "1600"
            }
          ]
        }
    }
    
  • Senha SA para a instância do SQL do Azure no Edge: Esse é o valor especificado para a variável de ambiente SA_PASSWORD durante a implantação do SQL do Azure no Edge.

Conectar-se ao Mecanismo de Banco de Dados de dentro do contêiner

As ferramentas de linha de comando do SQL Server são incluídas na imagem de contêiner do SQL do Azure no Edge. Se você anexar ao contêiner com um prompt de comando interativo, poderá executar as ferramentas localmente. As ferramentas de cliente SQL não estão disponíveis na plataforma ARM64.

  1. Use o comando docker exec -it para iniciar um shell bash interativo dentro do contêiner em execução. No exemplo a seguir, e69e056c702d é a ID do contêiner.

    docker exec -it e69e056c702d /bin/bash
    

    Dica

    Você nem sempre precisa especificar toda a ID do contêiner. Você só precisa especificar caracteres suficientes para identificá-la exclusivamente. Portanto, neste exemplo, talvez seja suficiente usar e6 ou e69, em vez da ID completa.

  2. Quando estiver dentro do contêiner, conecte-se localmente com o sqlcmd. A sqlcmd não está no caminho por padrão, portanto, será necessário especificar o caminho completo.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourPassword>'
    
  3. Quando terminar de usar o sqlcmd, digite exit.

  4. Quando terminar com o prompt de comando interativo, digite exit. O contêiner continuará a ser executado depois que você sair do shell bash interativo.

Conectar-se ao SQL do Azure no Edge de outro contêiner no mesmo host

Como dois contêineres em execução no mesmo host estão na mesma rede do Docker, você pode acessadá-los facilmente usando o nome do contêiner e o endereço da porta para o serviço. Por exemplo, se você estiver se conectando à instância do SQL do Azure no Edge de outro módulo Python (contêiner) no mesmo host, poderá usar uma cadeia de conexão semelhante à seguinte. O exemplo a seguir pressupõe que o SQL do Azure no Edge esteja configurado para detectá-lo na porta padrão.

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)

Conectar-se ao SQL do Azure no Edge de outro computador da rede

Aconselha-se a se conectar à instância do SQL do Azure no Edge usando outro computador na rede. Para fazer isso, use o endereço IP do host do Docker e a porta do host para o qual o contêiner do SQL do Azure no Edge está mapeado. Por exemplo, se o endereço IP do host do Docker for , e o contêiner do Azure SQL Edge for 192.168.2.121mapeado para a porta de host 1600, o endereço do servidor para a instância do Azure SQL Edge será 192.168.2.121,1600. O script do Python atualizado é:

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)

Para se conectar a uma instância do SQL do Azure no Edge usando SQL Server Management Studio em execução em um computador Windows, veja SQL Server Management Studio.

Para se conectar a uma instância do Azure SQL Edge usando o Visual Studio Code em um computador Windows, macOS ou Linux, consulte Visual Studio Code.

Para se conectar a uma instância do Azure SQL Edge usando o Azure Data Studio em um computador Windows, macOS ou Linux, consulte Azure Data Studio.

Próximas etapas