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:
Implementación conectada mediante Azure IoT Edge: Azure SQL Edge se puede implementar como módulo para Azure IoT Edge. Para obtener más información, consulte Implementación de Azure SQL Edge.
Implementación desconectada: las imágenes de contenedor de Azure SQL Edge se pueden extraer de Docker Hub e implementarse como un contenedor independiente o en un clúster de Kubernetes. 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.
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:
- Incidencias habituales y soluciones para Azure IoT Edge.
- Solución de problemas del dispositivo 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 usuariomssql
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 dedocker ps -a
. Si no es así, usedocker 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 dedocker 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 datosmaster
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
ymastlog.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 subdirectoriolog
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.