Behandeln von Problemen mit Azure SQL Edge-Bereitstellungen

Wichtig

Azure SQL Edge unterstützt die ARM64-Plattform nicht mehr.

Dieser Artikel enthält Informationen zu Fehlern, die auftreten können, wenn Azure SQL Edge-Container bereitgestellt und verwendet werden, und beschreibt Problembehandlungstechniken, mit denen diese Probleme behoben werden können.

Azure SQL Edge unterstützt zwei Bereitstellungsmodelle:

Problembehandlung für IoT Edge-Geräte und -Bereitstellungen

Tritt beim Bereitstellen von SQL Edge über Azure IoT Edge ein Fehler auf, vergewissern Sie sich, dass der iotedge-Dienst ordnungsgemäß konfiguriert ist und ausgeführt wird. Die folgenden Dokumente können bei der Behandlung von Problemen im Zusammenhang mit Azure IoT Edge hilfreich sein:

Fehler bei Docker-Befehlen

Wenn Sie Fehler für Befehle docker erhalten, stellen Sie sicher, dass der Docker-Dienst ausgeführt wird, und versuchen Sie, mit erhöhten Berechtigungen auszuführen.

Unter Linux kann beispielsweise folgender Fehler auftreten, wenn Sie docker-Befehle ausführen:

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

Wenn dieser Fehler unter Linux auftritt, versuchen Sie, diese Befehle mit sudo auszuführen. Wenn dies fehlschlägt, überprüfen Sie, ob der Docker-Dienst ausgeführt wird, und starten Sie ihn bei Bedarf.

sudo systemctl status docker
sudo systemctl start docker

Vergewissern Sie sich unter Windows, dass Sie PowerShell oder die Eingabeaufforderung als Administrator starten.

Startfehler bei Azure SQL Edge-Containern

Wenn der SQL Edge-Container nicht ausgeführt werden kann, gehen Sie wie folgt vor:

  • Wenn Sie Azure IoT Edge verwenden, stellen Sie sicher, dass die Modulimages erfolgreich heruntergeladen wurden und dass die Umgebungsvariablen und containeroptionen ordnungsgemäß im Modulmanifest angegeben sind.

  • Wenn Sie Docker- oder Kubernetes-basierte Bereitstellung verwenden, stellen Sie sicher, dass der docker run Befehl ordnungsgemäß gebildet ist. Weitere Informationen finden Sie unter Bereitstellen von Azure SQL Edge mit Docker und Bereitstellen eines Azure SQL Edge-Containers in Kubernetes.

  • Wenn Sie einen Fehler wie failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use. erhalten, versuchen Sie, den Containerport 1433 einem bereits verwendeten Port zuzuordnen. Dieser Fall kann eintreten, wenn Sie SQL Edge lokal auf dem Hostcomputer ausführen. Dieser Fall kann außerdem eintreten, wenn Sie zwei SQL Edge-Container starten und versuchen, diese demselben Hostport zuzuordnen. Verwenden Sie in diesem Fall den Parameter -p, um den Containerport 1433 einem anderen Hostport zuzuordnen. Beispiel:

    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.
    
  • Wenn Sie beim Versuch, einen Container zu starten, einen Fehler wie 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 erhalten, fügen Sie den Benutzer der Docker-Gruppe in Ubuntu hinzu. Melden Sie sich dann ab und wieder an, da sich diese Änderung auf neue Sitzungen auswirkt.

    usermod -aG docker $USER
    
  • Überprüfen Sie, ob Fehlermeldungen in Bezug auf den Container vorhanden sind.

    docker logs e69e056c702d
    
  • Wenn Sie Containerverwaltungssoftware verwenden, müssen Sie sicherstellen, dass diese die Ausführung von Containerprozessen als Root unterstützt. Der Prozess „sqlservr“ im Container wird als Root ausgeführt.

  • Azure SQL Edge-Container werden standardmäßig als Nicht-root-Benutzer namens mssql ausgeführt. Wenn Sie Bereitstellungspunkte oder Datenvolumes zum Speichern von Daten verwenden, stellen Sie sicher, dass der mssql Benutzer über entsprechende Berechtigungen für das Volume verfügt. Weitere Informationen finden Sie unter Ausführen als Nicht-Root-Benutzer und Persistentes Speichern von Daten.

  • Wenn Ihr SQL Edge-Docker-Container sofort nach dem Start beendet wird, überprüfen Sie die Docker-Protokolle. Wenn Sie PowerShell unter Windows mit dem Befehl docker run verwenden, verwenden Sie doppelte Anführungszeichen anstelle von einfachen Anführungszeichen. Verwenden Sie mit PowerShell Core einfache Anführungszeichen.

  • Überprüfen Sie die SQL Edge-Fehlerprotokolle.

SQL Edge-Verbindungsfehler

Wenn Sie keine Verbindung mit der SQL Edge-Instanz herstellen können, die in Ihrem Container ausgeführt wird, versuchen Sie Folgendes:

  • Stellen Sie sicher, dass Ihr SQL Edge-Container ausgeführt wird, indem Sie sich die STATUS Spalte der docker ps -a Ausgabe ansehen. Starten Sie ihn andernfalls mit docker start <Container ID>.

  • Wenn Sie den Container nicht dem Standardhostport 1433 zugeordnet haben, müssen Sie den Port in der Verbindungszeichenfolge angeben. Die Portzuordnung wird in der PORTS Spalte der docker ps -a Ausgabe angezeigt. Weitere Informationen zum Herstellen einer Verbindung mit Azure SQL Edge finden Sie unter Verbinden und Abfragen von Azure SQL Edge.

  • Wenn Sie SQL Edge zuvor mit einem zugeordneten Datenvolume- oder Datenvolumecontainer bereitgestellt haben und jetzt den vorhandenen zugeordneten Datenvolume- oder Datenvolumecontainer verwenden, ignoriert SQL Edge den Wert der Umgebungsvariable MSSQL_SA_PASSWORD . Stattdessen wird das zuvor konfigurierte SA-Benutzerkennwort verwendet. Dies geschieht, da SQL Edge die vorhandenen master Datenbankdateien im zugeordneten Volume- oder Datenvolumecontainer wiederverwendet. Wenn dieses Problem auftritt, können Sie die folgenden Optionen verwenden:

    • Herstellen einer Verbindung mit dem zuvor verwendeten Kennwort, wenn es noch verfügbar ist
    • Konfigurieren von SQL Edge, sodass ein anderes zugeordnetes Volume oder ein anderer zugeordneter Datenvolumecontainer verwendet wird
    • Entfernen Sie die vorhandenen master Datenbankdateien (master.mdf und mastlog.mdf) aus dem zugeordneten Volume- oder Datenvolumecontainer.
  • Überprüfen Sie die SQL Edge-Fehlerprotokolle.

SQL Edge-Setup- und Fehlerprotokolle

Standardmäßig sind SQL Edge-Fehlerprotokolle im /var/opt/mssql/log Verzeichnis innerhalb des Containers vorhanden und können auf eine der folgenden Arten zugegriffen werden:

  • Wenn Sie beim Erstellen des Containers ein Hostverzeichnis /var/opt/mssql bereitgestellt haben, können Sie stattdessen im log Unterverzeichnis auf dem zugeordneten Pfad auf dem Host suchen.

  • Durch Verwenden einer interaktiven Eingabeaufforderung, um eine Verbindung mit dem Container herzustellen. Wenn der Container nicht ausgeführt wird, starten Sie diesen zunächst. Verwenden Sie dann eine interaktive Eingabeaufforderung, um die Protokolle zu überprüfen. Die Container-ID können Sie durch Ausführen des Befehls docker ps abrufen.

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

    Führen Sie folgende Befehle über die Bash-Sitzung in Ihrem Container aus:

    cd /var/opt/mssql/log
    cat errorlog
    
  • Wenn der SQL Edge-Container ausgeführt wird und Sie mithilfe von Clienttools eine Verbindung mit der Instanz herstellen können, können Sie die gespeicherte Prozedur sp_readerrorlog verwenden, um den Inhalt des SQL Edge-Fehlerprotokolls zu lesen.

Ausführen von Befehlen in einem Container

Wenn Sie bereits einen Container ausführen, können Sie über ein Hostterminal Befehle innerhalb des Containers ausführen.

So rufen Sie die Container-ID ab:

docker ps -a

So starten Sie ein Bash-Terminal in der Containerausführung:

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

Nun können Sie Befehle wie über das Terminal innerhalb des Containers ausführen. Wenn Sie fertig sind, geben Sie exit ein. Dadurch wird die interaktive Befehlssitzung beendet, aber der Container wird weiter ausgeführt.

Ausführliche Protokollierung aktivieren

Wenn die Standardprotokollebene für das Streamingmodul nicht genügend Informationen bereitstellt, kann die Debugprotokollierung für das Streamingmodul in SQL Edge aktiviert werden. Um die Debugprotokollierung zu aktivieren, fügen Sie der SQL Edge-Bereitstellung die RuntimeLogLevel=debug Umgebungsvariable hinzu. Nach dem Aktivieren der Debugprotokollierung sollten Sie versuchen, das Problem zu reproduzieren, und überprüfen Sie die Protokolle hinsichtlich relevanter Meldungen oder Ausnahmen.

Hinweis

Die Option für die ausführliche Protokollierung sollte nur für die Problembehandlung und nicht für reguläre Produktionsworkloads verwendet werden.

Nächste Schritte