Share via


Résoudre les problèmes liés aux déploiements Azure SQL Edge

Important

Azure SQL Edge ne prend plus en charge la plateforme ARM64.

Cet article fournit des informations sur les problèmes que vous pouvez rencontrer quand vous déployez et utilisez des conteneurs Azure SQL Edge, puis explique certaines techniques de dépannage pour vous aider à résoudre ces problèmes.

Azure SQL Edge prend en charge deux modes de déploiement :

Résoudre les problèmes liés aux déploiements et appareils IoT Edge

Si vous obtenez une erreur lors du déploiement de SQL Edge par le biais d’Azure IoT Edge, vérifiez que iotedgele service est correctement configuré et opérationnel. La documentation suivante peut vous être utile pour résoudre les problèmes liés à Azure IoT Edge :

Erreurs de commande Docker

Si vous obtenez des erreurs pour toutes docker les commandes, assurez-vous que le service Docker est en cours d’exécution et essayez d’exécuter avec des autorisations élevées.

Par exemple, sur Linux, vous pouvez obtenir l’erreur suivante lors de l’exécution des commandes docker :

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

Si vous recevez cette erreur sur Linux, essayez d’exécuter les mêmes commandes précédées de sudo. En cas d’échec, vérifiez que le service Docker est en cours d’exécution et démarrez-le si nécessaire.

sudo systemctl status docker
sudo systemctl start docker

Sur Windows, vérifiez que vous lancez PowerShell ou votre invite de commandes en tant qu’administrateur.

Problèmes de démarrage du conteneur Azure SQL Edge

Si le conteneur SQL Edge ne parvient pas à démarrer, vérifiez les points suivants :

  • Si vous utilisez Azure IoT Edge, vérifiez que les images de module ont été téléchargées correctement et que les variables d’environnement et les options de création de conteneur sont correctement spécifiées dans le manifeste du module.

  • Si vous utilisez le déploiement basé sur Docker ou Kubernetes, vérifiez que la docker run commande est correctement formée. Pour plus d’informations, consultez Déployer Azure SQL Edge avec Docker et Déployer un conteneur Azure SQL Edge dans Kubernetes.

  • Si vous recevez une erreur comme failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use., vous essayez de mapper le port 1433 du conteneur à un port qui est déjà en cours d’utilisation. Cela peut se produire si vous exécutez SQL Edge localement sur la machine hôte. Cela peut également se produire si vous démarrez deux conteneurs SQL Edge et que vous essayez de les mapper tous les deux sur le même port hôte. Dans ce cas, utilisez le paramètre -p pour mapper le port de conteneur 1433 sur un port d’hôte différent. Par exemple :

    sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge-developer.
    
  • Si vous recevez une erreur comme 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 quand vous essayez de démarrer un conteneur, ajoutez votre utilisateur au groupe Docker dans Ubuntu. Ensuite, déconnectez-vous et reconnectez-vous, car cette modification affecte les nouvelles sessions.

    usermod -aG docker $USER
    
  • Vérifiez si des messages d’erreur s’affichent dans le conteneur.

    docker logs e69e056c702d
    
  • Si vous utilisez un logiciel de gestion de conteneur, vérifiez qu’il prend en charge les processus de conteneur s’exécutant en tant que root. Le processus sqlservr dans le conteneur s’exécute en tant que root.

  • Par défaut, les conteneurs Azure SQL Edge s’exécutent en tant qu’utilisateur non racine nommé mssql. Si vous utilisez des points de montage ou des volumes de données pour conserver des données, vérifiez que l’utilisateur mssql dispose des autorisations appropriées sur le volume. Pour plus d’informations, consultez Exécuter en tant qu’utilisateur non racine et Rendre les données persistantes.

  • Si votre conteneur Docker SQL Edge s’arrête immédiatement après son démarrage, examinez vos journaux Docker. Si vous utilisez PowerShell sur Windows avec la commande docker run, utilisez des guillemets doubles plutôt que simples. Avec PowerShell Core, utilisez des guillemets simples.

  • Examinez les journaux d’erreurs SQL Edge.

Échecs de connexion à SQL Edge

Si vous ne réussissez pas à vous connecter à l’instance SQL Edge exécutée dans votre conteneur, vérifiez les points suivants :

  • Vérifiez que votre conteneur SQL Edge est en cours d’exécution en examinant la STATUS colonne de la docker ps -a sortie. Si ce n’est pas le cas, utilisez docker start <Container ID> pour le démarrer.

  • Si vous avez mappé à un port hôte autre que celui par défaut (pas 1433), vérifiez que vous spécifiez le port dans votre chaîne de connexion. Vous pouvez voir votre mappage de port dans la PORTS colonne de la docker ps -a sortie. Pour plus d’informations sur la connexion à Azure SQL Edge, consultez Connecter et interroger Azure SQL Edge.

  • Si vous avez précédemment déployé SQL Edge avec un volume de données mappé ou un conteneur de volume de données, et utilisez maintenant le volume de données mappé ou le conteneur de volume de données, SQL Edge ignore la valeur de la variable d’environnement MSSQL_SA_PASSWORD . C’est le mot de passe d’administrateur système (AS) précédemment configuré qui est utilisé à la place. Cela se produit parce que SQL Edge réutilise les fichiers de bases de données existants master dans le volume mappé ou le conteneur de volume de données. Si vous rencontrez ce problème, vous avez les options suivantes :

    • Connectez-vous à l’aide du mot de passe utilisé précédemment, s’il est toujours disponible.
    • Configurez SQL Edge pour utiliser un autre volume ou conteneur de volume de données mappé.
    • Supprimez les fichiers de base de données existants master (master.mdf et mastlog.mdf) du volume mappé ou du conteneur de volume de données.
  • Examinez les journaux d’erreurs SQL Edge.

Journaux d’erreurs et d’installation de SQL Edge

Par défaut, les journaux d’erreurs SQL Edge sont présents dans le /var/opt/mssql/log répertoire du conteneur et sont accessibles de l’une des manières suivantes :

  • Si vous avez monté un répertoire /var/opt/mssql hôte sur lequel vous avez créé votre conteneur, vous pouvez plutôt rechercher dans le log sous-répertoire sur le chemin mappé sur l’hôte.

  • En utilisant une invite de commandes interactive pour vous connecter au conteneur. Si le conteneur n’est pas en cours d’exécution, démarrez d’abord le conteneur. Utilisez ensuite une invite de commandes interactive pour inspecter les journaux. Vous pouvez obtenir l’ID du conteneur en exécutant la commande docker ps.

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

    À partir de la session bash à l’intérieur de votre conteneur, exécutez les commandes suivantes :

    cd /var/opt/mssql/log
    cat errorlog
    
  • Si le conteneur SQL Edge est opérationnel et que vous pouvez vous connecter à l’instance à l’aide d’outils clients, vous pouvez utiliser la procédure sp_readerrorlog stockée pour lire le contenu du journal des erreurs SQL Edge.

Exécuter des commandes dans un conteneur

Si vous disposez d’un conteneur en cours d’exécution, vous pouvez exécuter des commandes dans le conteneur à partir d’un terminal hôte.

Pour récupérer l’ID de conteneur, exécutez :

docker ps -a

Pour démarrer un terminal bash dans le conteneur, exécutez :

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

Vous pouvez maintenant exécuter des commandes comme si vous les exécutiez sur le terminal à l’intérieur du conteneur. Quand vous avez terminé, tapez exit. Cela quitte la session de commande interactive, mais votre conteneur continue à s’exécuter.

Activez la journalisation commentée

Si le niveau de journal par défaut du moteur de diffusion en continu ne fournit pas suffisamment d’informations, la journalisation du débogage pour le moteur de diffusion en continu peut être activée dans SQL Edge. Pour activer la journalisation du débogage, ajoutez la RuntimeLogLevel=debug variable d’environnement à votre déploiement SQL Edge. Après avoir activé la journalisation du débogage, essayez de reproduire le problème et examinez les éventuels messages ou exceptions enregistrés dans les journaux.

Remarque

L’option de journalisation détaillée doit être utilisée uniquement pour la résolution des problèmes et non pour la charge de travail de production normale.

Étapes suivantes