Delen via


Problemen met Azure SQL Edge-implementaties oplossen

Belangrijk

Azure SQL Edge wordt op 30 september 2025 buiten gebruik gesteld. Zie de kennisgeving buitengebruikstelling voor meer informatie en migratieopties.

Notitie

Azure SQL Edge biedt geen ondersteuning meer voor het ARM64-platform.

Dit artikel bevat informatie over mogelijke fouten bij het implementeren en gebruiken van Azure SQL Edge-containers en biedt technieken voor probleemoplossing om deze problemen op te lossen.

Azure SQL Edge ondersteunt twee implementatiemodellen:

Problemen met IoT Edge-apparaten en -implementaties oplossen

Als er een fout optreedt tijdens het implementeren van SQL Edge via Azure IoT Edge, controleert u of de iotedge service juist is geconfigureerd en wordt uitgevoerd. De volgende documenten kunnen nuttig zijn bij het oplossen van problemen met betrekking tot Azure IoT Edge:

Docker-opdrachtfouten

Als er fouten optreden voor docker opdrachten, controleert u of de Docker-service wordt uitgevoerd en probeert u uit te voeren met verhoogde machtigingen.

In Linux krijgt u bijvoorbeeld mogelijk de volgende fout bij het uitvoeren docker van opdrachten:

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

Als u deze fout in Linux krijgt, voert u dezelfde opdrachten uit als voorafgegaan door sudo. Als dit mislukt, controleert u of de Docker-service wordt uitgevoerd en start u deze indien nodig.

sudo systemctl status docker
sudo systemctl start docker

Controleer in Windows of u PowerShell of de opdrachtprompt als beheerder start.

Opstartfouten voor Azure SQL Edge-containers

Als de SQL Edge-container niet kan worden uitgevoerd, voert u de volgende tests uit:

  • Als u Azure IoT Edge gebruikt, controleert u of de module-installatiekopieën zijn gedownload en of de omgevingsvariabelen en opties voor het maken van containers correct zijn opgegeven in het modulemanifest.

  • Als u docker- of Kubernetes-implementatie gebruikt, controleert u of de docker run opdracht juist is gevormd. Zie Azure SQL Edge implementeren met Docker en Een Azure SQL Edge-container implementeren in Kubernetes voor meer informatie.

  • Als er een foutbericht wordt weergegeven, failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use.probeert u de containerpoort 1433 toe te wijzen aan een poort die al in gebruik is. Dit kan gebeuren als u SQL Edge lokaal uitvoert op de hostcomputer. Het kan ook gebeuren als u twee SQL Edge-containers start en beide probeert toe te wijzen aan dezelfde hostpoort. Als dit gebeurt, gebruikt u de parameter om de -p containerpoort 1433 toe te wijzen aan een andere hostpoort. Voorbeeld:

    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.
    
  • Als er een fout optreedt, bijvoorbeeld 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 bij het starten van een container, voegt u uw gebruiker toe aan de docker-groep in Ubuntu. Meld u vervolgens af en weer aan, omdat deze wijziging van invloed is op nieuwe sessies.

    usermod -aG docker $USER
    
  • Controleer of er foutberichten van de container zijn.

    docker logs e69e056c702d
    
  • Als u containerbeheersoftware gebruikt, moet u ervoor zorgen dat deze containerprocessen ondersteunt die als hoofdmap worden uitgevoerd. Het sqlservr-proces in de container wordt uitgevoerd als root.

  • Standaard worden Azure SQL Edge-containers uitgevoerd als een niet-hoofdgebruiker met de naam mssql. Als u koppelpunten of gegevensvolumes gebruikt om gegevens vast te houden, moet u ervoor zorgen dat de mssql gebruiker over de juiste machtigingen op het volume beschikt. Zie Uitvoeren als niet-hoofdgebruiker en persistente gegevens voor meer informatie.

  • Als uw SQL Edge Docker-container direct na het starten wordt afgesloten, controleert u de Docker-logboeken. Als u PowerShell in Windows gebruikt met de docker run opdracht, gebruikt u dubbele aanhalingstekens in plaats van enkele aanhalingstekens. Gebruik met PowerShell Core enkele aanhalingstekens.

  • Bekijk de SQL Edge-foutenlogboeken.

SQL Edge-verbindingsfouten

Als u geen verbinding kunt maken met het SQL Edge-exemplaar dat in uw container wordt uitgevoerd, voert u de volgende tests uit:

  • Zorg ervoor dat uw SQL Edge-container wordt uitgevoerd door de STATUS kolom van de docker ps -a uitvoer te bekijken. Als dat niet het gaat, kunt docker start <Container ID> u deze starten.

  • Als u bent toegewezen aan een niet-standaardhostpoort (niet 1433), moet u ervoor zorgen dat u de poort opgeeft in uw verbindingsreeks. U kunt de poorttoewijzing zien in de PORTS kolom van de docker ps -a uitvoer. Zie Verbinding maken en query's uitvoeren op Azure SQL Edge voor meer informatie over het maken van verbinding met Azure SQL Edge.

  • Als u SQL Edge eerder hebt geïmplementeerd met een toegewezen gegevensvolume of gegevensvolumecontainer en nu de bestaande toegewezen gegevensvolume- of gegevensvolumecontainer gebruikt, negeert SQL Edge de waarde van MSSQL_SA_PASSWORD de omgevingsvariabele. In plaats daarvan wordt het eerder geconfigureerde SA-gebruikerswachtwoord gebruikt. Dit gebeurt omdat SQL Edge de bestaande master databasesbestanden opnieuw gebruikt in de toegewezen volume- of gegevensvolumecontainer. Als u dit probleem krijgt, kunt u de volgende opties gebruiken:

    • Maak verbinding met het eerder gebruikte wachtwoord als het nog steeds beschikbaar is.
    • Configureer SQL Edge voor het gebruik van een ander toegewezen volume of een andere gegevensvolumecontainer.
    • Verwijder de bestaande master databasebestanden (master.mdf en mastlog.mdf) uit de toegewezen volume- of gegevensvolumecontainer.
  • Bekijk de SQL Edge-foutenlogboeken.

Sql Edge-installatie- en foutlogboeken

Sql Edge-foutenlogboeken zijn standaard aanwezig in de /var/opt/mssql/log map in de container en kunnen op een van de volgende manieren worden geopend:

  • Als u een hostmap /var/opt/mssql hebt gekoppeld toen u de container maakte, kunt u in plaats daarvan zoeken in de log submap op het toegewezen pad op de host.

  • Door een interactieve opdrachtprompt te gebruiken om verbinding te maken met de container. Als de container niet wordt uitgevoerd, start u eerst de container. Gebruik vervolgens een interactieve opdrachtprompt om de logboeken te inspecteren. U kunt de container-id ophalen door de opdracht docker psuit te voeren.

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

    Voer vanuit de bash-sessie in uw container de volgende opdrachten uit:

    cd /var/opt/mssql/log
    cat errorlog
    
  • Als de SQL Edge-container actief is en u verbinding kunt maken met het exemplaar met behulp van clienthulpprogramma's, kunt u de opgeslagen procedure sp_readerrorlog gebruiken om de inhoud van het SQL Edge-foutenlogboek te lezen.

Opdrachten uitvoeren in een container

Als u een actieve container hebt, kunt u opdrachten in de container uitvoeren vanuit een hostterminal.

Voer de container-id uit om de container-id op te halen:

docker ps -a

Ga als volgende te werk om een bash-terminal te starten in de container:

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

U kunt nu opdrachten uitvoeren alsof u ze uitvoert in de terminal in de container. Wanneer u klaar bent, typt exitu . Hierdoor wordt de interactieve opdrachtsessie afgesloten, maar de container blijft actief.

Uitgebreide logboekregistratie inschakelen

Als het standaardlogboekniveau voor de streaming-engine onvoldoende informatie biedt, kan logboekregistratie voor foutopsporing voor de streaming-engine worden ingeschakeld in SQL Edge. Als u logboekregistratie voor foutopsporing wilt inschakelen, voegt u de RuntimeLogLevel=debug omgevingsvariabele toe aan uw SQL Edge-implementatie. Nadat u logboekregistratie voor foutopsporing hebt ingeschakeld, probeert u het probleem te reproduceren en controleert u de logboeken op relevante berichten of uitzonderingen.

Notitie

De optie Uitgebreide logboekregistratie mag alleen worden gebruikt voor probleemoplossing en niet voor normale productieworkloads.