Conectar e consultar o Azure SQL Edge

Importante

O Azure SQL Edge não suporta mais a plataforma ARM64.

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

  • Dentro do recipiente
  • De outro contêiner do Docker em execução no mesmo host
  • No computador anfitrião
  • A partir de qualquer outra máquina cliente na rede

Ferramentas para se conectar ao Azure SQL Edge

Você pode se conectar a uma instância do Azure SQL Edge a partir de qualquer uma destas 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 SQL Edge do Azure a partir de uma máquina de rede, você precisa do seguinte:

  • Endereço IP ou nome de rede da máquina host: esta é a máquina host onde o contêiner do Azure SQL Edge está sendo executado.

  • Mapeamento de porta de host de contêiner do SQL Edge do Azure: este é o mapeamento da porta de contêiner do Docker para uma porta no host. Dentro do contêiner, o Azure SQL Edge é sempre mapeado para a porta 1433. Você pode alterar isso se quiser. Para alterar o número da porta, atualize as Opções de Criação de Contêiner para o módulo SQL Edge do Azure 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 Azure SQL Edge: este é o valor especificado para a variável de ambiente durante a SA_PASSWORD implantação do Azure SQL Edge.

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

As ferramentas de linha de comando do SQL Server estão incluídas na imagem de contêiner do Azure SQL 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 para iniciar um shell bash interativo dentro do docker exec -it contêiner em execução. No exemplo a seguir, e69e056c702d é o ID do contêiner.

    docker exec -it e69e056c702d /bin/bash
    

    Gorjeta

    Nem sempre é necessário especificar o ID do contêiner inteiro. Você só precisa especificar caracteres suficientes para identificá-lo exclusivamente. Portanto, neste exemplo, pode ser suficiente usar e6 ou e69, em vez do ID completo.

  2. Quando estiver dentro do contêiner, conecte-se localmente com o sqlcmd. O sqlcmd não está no caminho por padrão, então você precisa 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 o prompt de comando interativo, digite exit. Seu contêiner continua a ser executado depois que você sai do shell bash interativo.

Conectar-se ao Azure SQL 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 acessá-los facilmente usando o nome do contêiner e o endereço da porta do serviço. Por exemplo, se você estiver se conectando à instância do Azure SQL Edge a partir de outro módulo Python (contêiner) no mesmo host, poderá usar uma cadeia de conexão semelhante à seguinte. (Este exemplo pressupõe que o Azure SQL Edge esteja configurado para escutar 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 Azure SQL Edge de outra máquina de rede

Talvez você queira se conectar à instância do Azure SQL Edge de outra máquina na rede. Para fazer isso, use o endereço IP do host do Docker e a porta do host para a qual o contêiner do Azure SQL 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 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 Azure SQL Edge usando o SQL Server Management Studio em execução em uma máquina Windows, consulte SQL Server Management Studio.

Para se conectar a uma instância do Azure SQL Edge usando o Visual Studio Code em uma máquina 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 uma máquina Windows, macOS ou Linux, consulte Azure Data Studio.

Próximos passos