Problembehandlung von Azure SQL Edge-Bereitstellungen
Wichtig
Azure SQL Edge wird am 30. September 2025 eingestellt. Weitere Informationen und Migrationsoptionen finden Sie im Einstellungshinweis.
Hinweis
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:
Verbundene Bereitstellung über Azure IoT Edge: Azure SQL Edge kann als Modul für Azure IoT Edge bereitgestellt werden. Weitere Informationen finden Sie unter Bereitstellen von Azure SQL Edge.
Getrennte Bereitstellung: Azure SQL Edge-Containerimages können aus Docker Hub abgerufen und entweder als eigenständiger Container oder in einem Kubernetes-Cluster bereitgestellt werden. Weitere Informationen finden Sie unter Bereitstellen von Azure SQL Edge mit Docker und Bereitstellen eines Azure SQL Edge-Containers in Kubernetes.
Problembehandlung von IoT Edge-Geräten 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:
- Häufig auftretende Probleme und Lösungen für Azure IoT Edge
- Behandeln von Problemen bei Ihrem IoT Edge-Gerät
Fehler bei Docker-Befehlen
Wenn Fehler bei docker
-Befehlen auftreten, sollten Sie sicherstellen, dass der Docker-Dienst ausgeführt wird und versuchen, diesen 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 dieser Versuch fehlschlägt, sollten Sie überprüfen, ob der Docker-Dienst ausgeführt wird und diesen ggf. starten.
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 Containererstellungsoptionen im Modulmanifest korrekt angegeben sind.
Wenn Sie eine Docker-oder Kubernetes-basierte Bereitstellung verwenden, vergewissern Sie sich, dass der
docker run
-Befehl korrekt formatiert 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=<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 verwenden, um Daten zu speichern, stellen Sie sicher, dass der Benutzermssql
geeignete Berechtigungen für das Volume hat. 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 die
STATUS
-Spalte der Ausgabe vondocker ps -a
überprüfen. Starten Sie ihn andernfalls mitdocker start <Container ID>
.Wenn Sie den Container nicht dem Standardhostport 1433 zugeordnet haben, müssen Sie den Port in der Verbindungszeichenfolge angeben. Die Portzuordnung ist in der
PORTS
-Spalte der Ausgabe vondocker ps -a
ersichtlich. Weitere Informationen über das Herstellen einer Verbindung mit Azure SQL Edge finden Sie unter Herstellen einer Verbindung mit und Abfragen von Azure SQL Edge.Wenn Sie SQL Edge zuvor mit einem zugeordneten Datenvolume oder Datenvolumecontainer bereitgestellt haben und nun das vorhandene zugeordnete Datenvolume oder den vorhandenen zugeordneten Datenvolumecontainer verwenden, ignoriert SQL Edge den Wert der Umgebungsvariablen
MSSQL_SA_PASSWORD
. Stattdessen wird das zuvor konfigurierte SA-Benutzerkennwort verwendet. Dies passiert, weil SQL Edge die vorhandenenmaster
-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
undmastlog.mdf
) aus dem zugeordneten Volume oder Datenvolumecontainer.
Überprüfen Sie die SQL Edge-Fehlerprotokolle.
Setup- und Fehlerprotokolle für SQL Edge
Standardmäßig befinden sich SQL Edge-Protokolle im /var/opt/mssql/log
-Verzeichnis in dem Container, und es kann auf eine der folgenden Arten auf sie zugegriffen werden:
Wenn Sie bei der Erstellung des Containers ein Hostverzeichnis in
/var/opt/mssql
eingebunden haben, können Sie stattdessen im Unterverzeichnislog
des auf dem Host zugeordneten Pfads 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 aktiv ist und ausgeführt wird und Sie über 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 die Streaming-Engine nicht genügend Informationen bereitstellt, kann die Debugprotokollierung für die Streaming-Engine in SQL Edge aktiviert werden. Um die Debugprotokollierung zu aktivieren, fügen Sie Ihrer SQL Edge-Bereitstellung die Umgebungsvariable RuntimeLogLevel=debug
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.