Řešení potíží s nasazeními Azure SQL Edge
Důležité
Azure SQL Edge bude vyřazeno 30. září 2025. Další informace a možnosti migrace najdete v oznámení o vyřazení.
Poznámka:
Azure SQL Edge už nepodporuje platformu ARM64.
Tento článek obsahuje informace o možných chybách, ke kterým dochází při nasazování a používání kontejnerů Azure SQL Edge, a poskytuje techniky řešení potíží, které vám pomůžou tyto problémy vyřešit.
Azure SQL Edge podporuje dva modely nasazení:
Připojené nasazení prostřednictvím Azure IoT Edge: Azure SQL Edge je možné nasadit jako modul pro Azure IoT Edge. Další informace najdete v tématu Nasazení Azure SQL Edge.
Odpojené nasazení: Image kontejnerů Azure SQL Edge je možné načíst z centra Dockeru a nasadit je buď jako samostatný kontejner, nebo do clusteru Kubernetes. Další informace najdete v tématu Nasazení Azure SQL Edge pomocí Dockeru a nasazení kontejneru Azure SQL Edge v Kubernetes.
Řešení potíží se zařízeními a nasazeními IoT Edge
Pokud při nasazování SQL Edge prostřednictvím Azure IoT Edge dojde k chybě, ujistěte se, že iotedge
je služba správně nakonfigurovaná a spuštěná. Při řešení potíží souvisejících s Azure IoT Edge můžou být užitečné následující dokumenty:
Chyby příkazů Dockeru
Pokud dojde k chybám u všech docker
příkazů, ujistěte se, že je spuštěná služba Docker, a zkuste spustit se zvýšenými oprávněními.
Například v Linuxu se při spouštění docker
příkazů může zobrazit následující chyba:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Pokud se zobrazí tato chyba v Linuxu, zkuste spustit stejné příkazy, které sudo
jsou před sebou . Pokud se to nezdaří, ověřte, že je služba Docker spuštěná, a v případě potřeby ji spusťte.
sudo systemctl status docker
sudo systemctl start docker
Ve Windows ověřte, že spouštíte PowerShell nebo příkazový řádek jako správce.
Chyby spuštění kontejneru Azure SQL Edge
Pokud se kontejner SQL Edge nepodaří spustit, vyzkoušejte následující testy:
Pokud používáte Azure IoT Edge, ujistěte se, že se image modulů úspěšně stáhly a že proměnné prostředí a možnosti vytváření kontejnerů jsou v manifestu modulu správně zadané.
Pokud používáte nasazení založené na Dockeru nebo Kubernetes, ujistěte se, že
docker run
je příkaz správně vytvořený. Další informace najdete v tématu Nasazení Azure SQL Edge pomocí Dockeru a nasazení kontejneru Azure SQL Edge v Kubernetes.Pokud se zobrazí například chyba
failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use.
, pokoušíte se namapovat port kontejneru 1433 na port, který se už používá. K tomu může dojít, pokud používáte SQL Edge místně na hostitelském počítači. Může k tomu dojít také v případě, že spustíte dva kontejnery SQL Edge a pokusíte se je namapovat na stejný port hostitele. V takovém případě pomocí-p
parametru namapujte port kontejneru 1433 na jiný port hostitele. Příklad: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.
Pokud se zobrazí chyba, například
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
při pokusu o spuštění kontejneru, přidejte uživatele do skupiny Dockeru v Ubuntu. Potom se odhlaste a znovu se přihlaste, protože tato změna ovlivňuje nové relace.usermod -aG docker $USER
Zkontrolujte, jestli v kontejneru nejsou nějaké chybové zprávy.
docker logs e69e056c702d
Pokud používáte jakýkoli software pro správu kontejnerů, ujistěte se, že podporuje procesy kontejnerů spuštěné jako root. Proces sqlservr v kontejneru běží jako kořen.
Ve výchozím nastavení se kontejnery Azure SQL Edge spouštějí jako uživatel s jiným uživatelem než root s názvem
mssql
. Pokud k zachování dat používáte přípojné body nebo datové svazky, ujistěte se, žemssql
uživatel má příslušná oprávnění ke svazku. Další informace najdete v tématu Spustit jako uživatel, který není uživatelem root a zachovat data.Pokud se kontejner Dockeru SQL Edge okamžitě po spuštění ukončí, zkontrolujte protokoly Dockeru. Pokud používáte PowerShell ve Windows s příkazem
docker run
, použijte místo jednoduchých uvozovek dvojité uvozovky. V PowerShellu Core použijte jednoduché uvozovky.Projděte si protokoly chyb SQL Edge.
Selhání připojení SQL Edge
Pokud se nemůžete připojit k instanci SQL Edge spuštěné v kontejneru, vyzkoušejte následující testy:
Zkontrolujte, že je kontejner SQL Edge spuštěný, a to tak, že se podíváte na
STATUS
sloupec výstupudocker ps -a
. Pokud ne, použijtedocker start <Container ID>
ho ke spuštění.Pokud jste namapovali na jiný než výchozí port hostitele (ne 1433), ujistěte se, že zadáváte port v připojovací řetězec. Mapování portů můžete zobrazit ve
PORTS
sloupci výstupudocker ps -a
. Další informace o připojení k Azure SQL Edge najdete v tématu Připojení a dotazování Azure SQL Edge.Pokud jste dříve nasadili SQL Edge s mapovaným objemem dat nebo kontejnerem datového svazku a teď používáte existující mapovaný datový svazek nebo kontejner datového
MSSQL_SA_PASSWORD
svazku, SQL Edge ignoruje hodnotu proměnné prostředí. Místo toho se použije dříve nakonfigurované heslo uživatele SA. K tomu dochází, protože SQL Edge znovu používá existujícímaster
soubory databází v mapovaném svazku nebo kontejneru datového svazku. Pokud narazíte na tento problém, můžete použít následující možnosti:- Pokud je stále k dispozici, připojte se pomocí dříve použitého hesla.
- Nakonfigurujte SQL Edge tak, aby používal jiný mapovaný svazek nebo kontejner datového svazku.
- Odeberte existující
master
soubory databáze (master.mdf
amastlog.mdf
) z namapovaného svazku nebo kontejneru datového svazku.
Projděte si protokoly chyb SQL Edge.
Nastavení a protokoly chyb SQL Edge
Ve výchozím nastavení se protokoly chyb SQL Edge nacházejí v /var/opt/mssql/log
adresáři v kontejneru a dají se k němu přistupovat některým z následujících způsobů:
Pokud jste při vytváření kontejneru připojili adresář
/var/opt/mssql
hostitele, můžete místo toho hledat vlog
podadresáři na mapované cestě na hostiteli.Pomocí interaktivního příkazového řádku se připojte ke kontejneru. Pokud kontejner není spuštěný, nejprve kontejner spusťte. Pak pomocí interaktivního příkazového řádku zkontrolujte protokoly. ID kontejneru můžete získat spuštěním příkazu
docker ps
.docker start <ContainerID> docker exec -it <ContainerID> "/bin/bash"
Z relace Bash uvnitř kontejneru spusťte následující příkazy:
cd /var/opt/mssql/log cat errorlog
Pokud je kontejner SQL Edge spuštěný a můžete se k instanci připojit pomocí klientských nástrojů, můžete pomocí uložené procedury
sp_readerrorlog
přečíst obsah protokolu chyb SQL Edge.
Spouštění příkazů v kontejneru
Pokud máte spuštěný kontejner, můžete v kontejneru spouštět příkazy z hostitelského terminálu.
Spuštění ID kontejneru:
docker ps -a
Spuštění terminálu Bash v kontejneru:
docker exec -it <Container ID> /bin/bash
Teď můžete spouštět příkazy, jako kdybyste je spouštěli v terminálu uvnitř kontejneru. Po dokončení zadejte exit
. Tím se ukončí interaktivní relace příkazů, ale kontejner se bude dál spouštět.
Povolení podrobného protokolování
Pokud výchozí úroveň protokolu pro streamovací modul neposkytuje dostatek informací, můžete v SQL Edgi povolit protokolování ladění pro streamovací modul. Pokud chcete povolit protokolování ladění, přidejte proměnnou RuntimeLogLevel=debug
prostředí do nasazení SQL Edge. Po povolení protokolování ladění se pokuste problém reprodukovat a zkontrolovat protokoly u všech relevantních zpráv nebo výjimek.
Poznámka:
Možnost Podrobné protokolování by se měla používat jenom pro řešení potíží, a ne pro běžnou produkční úlohu.