Compartir a través de


Solución de problemas de implementaciones de Azure SQL Edge

Importante

Azure SQL Edge se retirará el 30 de septiembre de 2025. Para más información y opciones de migración, consulte el aviso de retirada.

Nota:

Azure SQL Edge ya no admite la plataforma ARM64.

En este artículo se proporciona información sobre los posibles errores que se pueden ver al implementar y usar contenedores de Azure SQL Edge y se ofrecen técnicas de solución de problemas para ayudar a resolver estas incidencias.

Azure SQL Edge admite dos modelos de implementación:

Solución de problemas de dispositivos e implementaciones de IoT Edge

Si se produce un error durante la implementación de SQL Edge a través de Azure IoT Edge, asegúrese de que el servicio iotedge esté correctamente configurado y en ejecución. Los siguientes documentos pueden ser útiles a la hora de solucionar incidencias relacionadas con Azure IoT Edge:

Errores de comandos de Docker

Si se producen errores para los comandos docker, asegúrese de que el servicio Docker está en ejecución e intente ejecutarlo con permisos elevados.

Por ejemplo, en Linux, podría recibir el siguiente error al ejecutar los comandos docker:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Si recibe este error en Linux, intente ejecutar los mismos comandos precedidos de sudo. Si se produce un error, compruebe que el servicio Docker está en ejecución e inícielo si es necesario.

sudo systemctl status docker
sudo systemctl start docker

En Windows, compruebe que está iniciando PowerShell o el símbolo del sistema como administrador.

Errores de inicio del contenedor de Azure SQL Edge

Si no se puede ejecutar el contenedor de SQL Edge, pruebe lo siguiente:

  • Si usa Azure IoT Edge, asegúrese de que las imágenes del módulo se han descargado correctamente y de que las variables de entorno y las opciones de creación de contenedor están especificadas correctamente en el manifiesto del módulo.

  • Si usa la implementación basada en Docker o Kubernetes, asegúrese de que el comando docker run tiene el formato correcto. Para más información, vea Implementación de Azure SQL Edge con Docker e Implementación de un contenedor de Azure SQL Edge en Kubernetes.

  • Si recibe un error como failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use., está intentando asignar el puerto del contenedor 1433 a un puerto que ya está en uso. Esto puede ocurrir si está ejecutando SQL Edge localmente en la máquina host. También puede ocurrir si inicia dos contenedores de SQL Edge e intenta asignarlos al mismo puerto de host. Si esto ocurre, use el parámetro -p para asignar el puerto del contenedor 1433 a otro puerto de host. Por ejemplo:

    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-developer.
    
  • Si recibe un error, como Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30tdout=1&tail=all: dial unix /var/run/docker.sock: connect: permission denied al intentar iniciar un contenedor, agregue el usuario al grupo de Docker en Ubuntu. Después, cierre la sesión y vuelva a iniciarla, ya que este cambio afecta a las nuevas sesiones.

    usermod -aG docker $USER
    
  • Compruebe si hay algún mensaje de error del contenedor.

    docker logs e69e056c702d
    
  • Si usa software de administración de contenedores, asegúrese de que admite procesos de contenedor que se ejecutan como raíz. El proceso sqlservr en el contenedor se ejecuta como raíz.

  • De forma predeterminada, los contenedores de Azure SQL Edge se ejecutan como un usuario no raíz denominado mssql. Si usa puntos de montaje o volúmenes de datos para conservar los datos, asegúrese de que el usuario mssql tenga los permisos adecuados en el volumen. Para obtener más información, vea Ejecución como usuario no raíz y Conservación de datos.

  • Si el contenedor de Docker de SQL Edge sale inmediatamente después de iniciarse, compruebe los registros de Docker. Si usa PowerShell en Windows con el comando docker run, use comillas dobles en lugar de comillas simples. Con PowerShell Core, use comillas simples.

  • Revise los registros de errores de SQL Edge.

Errores de conexión de SQL Edge

Si no puede conectarse a la instancia de SQL Edge que se ejecuta en el contenedor, pruebe lo siguiente:

  • Asegúrese de que el contenedor de SQL Edge está en ejecución; para ello, examine la columna STATUS de la salida de docker ps -a. Si no es así, use docker start <Container ID> para iniciarlo.

  • Si ha asignado a un puerto de host no predeterminado (no 1433), asegúrese de que está especificando el puerto en la cadena de conexión. Puede ver la asignación de puertos en la columna PORTS de la salida de docker ps -a. Para más información sobre cómo conectarse a Azure SQL Edge, vea Conexión a Azure SQL Edge y consulta.

  • Si anteriormente ha implementado SQL Edge con un volumen de datos asignado o un contenedor de volúmenes de datos, y ahora usa el volumen de datos asignado existente o el contenedor de volúmenes de datos, SQL Edge omite el valor de la variable de entorno MSSQL_SA_PASSWORD. En su lugar, se usa la contraseña de usuario SA configurada anteriormente. Esto sucede porque SQL Edge reutiliza los archivos de bases de datos master existentes en el volumen asignado o en el contenedor de volúmenes de datos. Si experimenta esta incidencia, puede usar las opciones siguientes:

    • Conéctese con la contraseña usada anteriormente, si todavía sigue disponible.
    • Configure SQL Edge para usar otro volumen asignado o contenedor de volúmenes de datos.
    • Quite los archivos existentes de la base de datos master (master.mdf y mastlog.mdf) del volumen asignado o del contenedor de volúmenes de datos.
  • Revise los registros de errores de SQL Edge.

Configuración y registros de errores de SQL Edge

De manera predeterminada, los registros de errores de SQL Edge están presentes en el directorio /var/opt/mssql/log del contenedor y se puede acceder a ellos mediante cualquiera de las formas siguientes:

  • Si ha montado un directorio host en /var/opt/mssql al crear el contenedor, en su lugar puede buscar en el subdirectorio log de la ruta de acceso asignada en el host.

  • Mediante el uso de un símbolo del sistema interactivo para conectarse al contenedor. Si el contenedor no se está ejecutando, primero inicie el contenedor. Después, use un símbolo del sistema interactivo para inspeccionar los registros. Puede obtener el id. de contenedor si ejecuta el comando docker ps.

    docker start <ContainerID>
    docker exec -it <ContainerID> "/bin/bash"
    

    En la sesión de Bash dentro del contenedor, ejecute los siguientes comandos:

    cd /var/opt/mssql/log
    cat errorlog
    
  • Si el contenedor de SQL Edge está en funcionamiento y puede conectarse a la instancia mediante herramientas de cliente, puede utilizar el procedimiento almacenado sp_readerrorlog para leer el contenido del registro de errores de SQL Edge.

Ejecución de comandos en un contenedor

Si tiene un contenedor en ejecución, puede ejecutar comandos dentro del contenedor desde un terminal del host.

Para obtener el identificador de contenedor, ejecute:

docker ps -a

Para iniciar un terminal de Bash en el contenedor, ejecute:

docker exec -it <Container ID> /bin/bash

Ahora puede ejecutar comandos como si los estuviera ejecutando en el terminal dentro del contenedor. Cuando termine, escriba exit. Esto cierra la sesión de comandos interactiva, pero el contenedor continúa ejecutándose.

Habilitación del registro detallado

Si el nivel de registro predeterminado para el motor de streaming no proporciona suficiente información, el registro de depuración del motor de streaming se puede habilitar en SQL Edge. Para habilitar el registro de depuración, agregue la variable de entorno RuntimeLogLevel=debug a la implementación de SQL Edge. Después de habilitar el registro de depuración, intente reproducir el problema y compruebe si hay mensajes o excepciones relevantes en los registros.

Nota:

La opción de registro detallado solo se debe usar para solucionar problemas y no para cargas de trabajo de producción normales.