Conexión a Azure SQL Edge y consulta

Importante

Azure SQL Edge ya no admite la plataforma ARM64.

En Azure SQL Edge, después de implementar un contenedor, puede conectarse al Motor de base de datos desde cualquiera de las siguientes ubicaciones:

  • En el contenedor.
  • Desde otro contenedor de Docker que se ejecute en el mismo host.
  • Desde el equipo host
  • Desde cualquier otro equipo cliente de la red.

Herramientas para conectarse a Azure SQL Edge

Puede conectarse a una instancia de Azure SQL Edge desde cualquiera de las siguientes herramientas comunes:

  • sqlcmd: las herramientas de cliente sqlcmd ya están incluidas en la imagen de contenedor de Azure SQL Edge. Si adjunta un contenedor en ejecución con un shell de Bash interactivo, puede ejecutar las herramientas de forma local. Las herramientas de cliente sql no están disponibles en la plataforma ARM64.
  • SQL Server Management Studio
  • Azure Data Studio
  • Visual Studio Code

Para conectarse a una Motor de base de datos de Azure SQL Edge desde una máquina de red, necesita lo siguiente:

  • Dirección IP o nombre de red de la máquina host: este es el equipo host donde se ejecuta el contenedor de Azure SQL Edge.

  • Asignación de puertos de host de contenedor de Azure SQL Edge: esta es la asignación del puerto de contenedor de Docker a un puerto en el host. Dentro del contenedor, Azure SQL Edge siempre se asigna al puerto 1433. Si quiere, puede cambiarlo. Para cambiar el número de puerto, actualice las Opciones de creación de contenedores para el módulo de Azure SQL Edge en Azure IoT Edge. En el siguiente ejemplo, el puerto 1433 del contenedor está asignado al puerto 1600 en el host.

    {
        "PortBindings": {
          "1433/tcp": [
            {
              "HostPort": "1600"
            }
          ]
        }
    }
    
  • Contraseña de administrador del sistema para la instancia de Azure SQL Edge: este es el valor especificado para la variable de entorno SA_PASSWORD durante la implementación de Azure SQL Edge.

Conectar al Motor de base de datos desde el contenedor

Las herramientas de línea de comandos de SQL Server están incluidas en la imagen de contenedor de Azure SQL Edge. Si se asocia el contenedor con un símbolo del sistema interactivo, puede ejecutar las herramientas de forma local. Las herramientas de cliente sql no están disponibles en la plataforma ARM64.

  1. Use el comando docker exec -it para iniciar un shell de Bash interactivo dentro de su contenedor en ejecución. En el ejemplo siguiente, e69e056c702d es el identificador del contenedor.

    docker exec -it e69e056c702d /bin/bash
    

    Sugerencia

    No siempre tiene que especificar el id. completo del contenedor. Solo tiene que especificar suficientes caracteres para identificarlo de forma única. Por lo tanto, en este ejemplo, podría ser suficiente usar e6 o e69 en lugar del id. completo.

  2. Cuando esté dentro del contenedor, conéctese localmente con sqlcmd. sqlcmd no está en la ruta de acceso de forma predeterminada, por lo que deberá especificar la ruta de acceso completa.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourPassword>'
    
  3. Cuando haya terminado con sqlcmd, escriba exit.

  4. Cuando haya terminado con el símbolo del sistema interactivo, escriba exit. El contenedor continuará ejecutándose después de salir del shell de Bash interactivo.

Conexión a Azure SQL Edge desde otro contenedor en el mismo host

Ya que dos contenedores que se ejecutan en el mismo host se encuentran en la misma red de Docker, se puede acceder fácilmente a ellos mediante el nombre del contenedor y la dirección del puerto para el servicio. Por ejemplo, si se va a conectar a la instancia de Azure SQL Edge desde otro módulo de Python (contenedor) en el mismo host, puede usar una cadena de conexión similar a la siguiente. (En este ejemplo se supone que Azure SQL Edge está configurado para escuchar en el puerto predeterminado).

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)

Conexión a Azure SQL Edge desde otro equipo de red

Es posible que quiera conectarse a la instancia de Azure SQL Edge desde otro equipo de la red. Para ello, use la dirección IP del host de Docker y el puerto de host al que está asignado el contenedor perimetral de Azure SQL Edge. Por ejemplo, si la dirección IP del host de Docker es 192.168.2.121y el contenedor de Azure SQL Edge se asigna al puerto de host 1600, la dirección del servidor de la instancia de Azure SQL Edge sería 192.168.2.121,1600. El script de Python actualizado es:

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 conectarse a una instancia de Azure SQL Edge con SQL Server Management Studio en ejecución en un equipo Windows, consulte SQL Server Management Studio.

Para conectarse a una instancia de Azure SQL Edge mediante Visual Studio Code en una máquina Windows, macOS o Linux, consulte Visual Studio Code.

Para conectarse a una instancia de Azure SQL Edge mediante Azure Data Studio en una máquina Windows, macOS o Linux, consulte Azure Data Studio.

Pasos siguientes