Rozwiązywanie problemów z wdrożeniami usługi Azure SQL Edge
Ważne
Usługa Azure SQL Edge zostanie wycofana 30 września 2025 r. Aby uzyskać więcej informacji i opcji migracji, zobacz powiadomienie o wycofaniu.
Uwaga
Usługa Azure SQL Edge nie obsługuje już platformy ARM64.
Ten artykuł zawiera informacje o możliwych błędach występujących podczas wdrażania i używania kontenerów usługi Azure SQL Edge oraz zawiera techniki rozwiązywania problemów ułatwiające rozwiązywanie tych problemów.
Usługa Azure SQL Edge obsługuje dwa modele wdrażania:
Wdrożenie połączone za pośrednictwem usługi Azure IoT Edge: usługę Azure SQL Edge można wdrożyć jako moduł dla usługi Azure IoT Edge. Aby uzyskać więcej informacji, zobacz Wdrażanie usługi Azure SQL Edge.
Wdrożenie bez połączenia: obrazy kontenerów usługi Azure SQL Edge można ściągnąć z centrum platformy Docker i wdrożyć je jako autonomiczny kontener lub w klastrze Kubernetes. Aby uzyskać więcej informacji, zobacz Deploy Azure SQL Edge with Docker and Deploy an Azure SQL Edge container in Kubernetes (Wdrażanie usługi Azure SQL Edge przy użyciu platformy Docker ) i Deploy an Azure SQL Edge container in Kubernetes (Wdrażanie kontenera usługi Azure SQL Edge na platformie Kubernetes).
Rozwiązywanie problemów z urządzeniami i wdrożeniami usługi IoT Edge
Jeśli podczas wdrażania usługi SQL Edge za pośrednictwem usługi Azure IoT Edge wystąpi błąd, upewnij się, że iotedge
usługa jest prawidłowo skonfigurowana i uruchomiona. Poniższe dokumenty mogą być przydatne podczas rozwiązywania problemów związanych z usługą Azure IoT Edge:
- Typowe problemy i rozwiązania dotyczące usługi Azure IoT Edge.
- Rozwiązywanie problemów z urządzeniem usługi IoT Edge
Błędy poleceń platformy Docker
Jeśli wystąpią błędy dla jakichkolwiek docker
poleceń, upewnij się, że usługa Platformy Docker jest uruchomiona i spróbuj uruchomić polecenie z podwyższonym poziomem uprawnień.
Na przykład w systemie Linux może wystąpić następujący błąd podczas uruchamiania docker
poleceń:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Jeśli wystąpi ten błąd w systemie Linux, spróbuj uruchomić te same polecenia poprzedzone ciągiem sudo
. Jeśli to się nie powiedzie, sprawdź, czy usługa Platformy Docker jest uruchomiona i uruchom ją w razie potrzeby.
sudo systemctl status docker
sudo systemctl start docker
W systemie Windows sprawdź, czy uruchamiasz program PowerShell lub wiersz polecenia jako administrator.
Błędy uruchamiania kontenera usługi Azure SQL Edge
Jeśli nie można uruchomić kontenera usługi SQL Edge, spróbuj wykonać następujące testy:
Jeśli używasz usługi Azure IoT Edge, upewnij się, że obrazy modułów zostały pomyślnie pobrane, a zmienne środowiskowe i opcje tworzenia kontenera są poprawnie określone w manifeście modułu.
Jeśli używasz wdrożenia opartego na platformie Docker lub Kubernetes, upewnij się, że
docker run
polecenie jest poprawnie sformułowane. Aby uzyskać więcej informacji, zobacz Deploy Azure SQL Edge with Docker and Deploy an Azure SQL Edge container in Kubernetes (Wdrażanie usługi Azure SQL Edge przy użyciu platformy Docker ) i Deploy an Azure SQL Edge container in Kubernetes (Wdrażanie kontenera usługi Azure SQL Edge na platformie Kubernetes).Jeśli wystąpi błąd, taki jak
failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use.
, próbujesz zamapować port kontenera 1433 na port, który jest już używany. Może się to zdarzyć, jeśli używasz przeglądarki SQL Edge lokalnie na maszynie hosta. Może się to również zdarzyć, jeśli uruchomisz dwa kontenery usługi SQL Edge i spróbujesz zamapować oba te kontenery na ten sam port hosta. W takim przypadku użyj parametru-p
, aby zamapować port kontenera 1433 na inny port hosta. Na przykład: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.
Jeśli wystąpi błąd, taki jak
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
podczas próby uruchomienia kontenera, dodaj użytkownika do grupy platformy Docker w systemie Ubuntu. Następnie wyloguj się i zaloguj się ponownie, ponieważ ta zmiana wpływa na nowe sesje.usermod -aG docker $USER
Sprawdź, czy istnieją komunikaty o błędach z kontenera.
docker logs e69e056c702d
Jeśli używasz dowolnego oprogramowania do zarządzania kontenerami, upewnij się, że obsługuje on procesy kontenerów działające jako katalog główny. Proces sqlservr w kontenerze jest uruchamiany jako katalog główny.
Domyślnie kontenery usługi Azure SQL Edge działają jako użytkownik niebędący użytkownikiem głównym o nazwie
mssql
. Jeśli używasz punktów instalacji lub woluminów danych do utrwalania danych, upewnij się, żemssql
użytkownik ma odpowiednie uprawnienia do woluminu. Aby uzyskać więcej informacji, zobacz Run as non-root user (Uruchamianie jako użytkownik niebędący użytkownikiem głównym) i Persist Data (Utrwalanie danych).Jeśli kontener platformy Docker usługi SQL Edge kończy się natychmiast po uruchomieniu, sprawdź dzienniki platformy Docker. Jeśli używasz programu PowerShell w systemie Windows z poleceniem
docker run
, użyj cudzysłowów podwójnych zamiast pojedynczych cudzysłowów. W programie PowerShell Core użyj pojedynczych cudzysłowów.Przejrzyj dzienniki błędów usługi SQL Edge.
Błędy połączeń usługi SQL Edge
Jeśli nie możesz nawiązać połączenia z wystąpieniem usługi SQL Edge uruchomionym w kontenerze, spróbuj wykonać następujące testy:
Upewnij się, że kontener usługi SQL Edge jest uruchomiony, przeglądając kolumnę
STATUS
docker ps -a
danych wyjściowych. Jeśli nie, użyj poleceniadocker start <Container ID>
, aby go uruchomić.Jeśli port hosta nie jest domyślny (nie 1433), upewnij się, że określono port w parametry połączenia. Mapowanie portów można zobaczyć w
PORTS
kolumnie danych wyjściowychdocker ps -a
. Aby uzyskać więcej informacji na temat nawiązywania połączenia z usługą Azure SQL Edge, zobacz Connect and query Azure SQL Edge (Nawiązywanie połączenia z usługą Azure SQL Edge i wykonywanie zapytań względem usługi Azure SQL Edge).Jeśli wcześniej wdrożono program SQL Edge z zamapowanym woluminem danych lub kontenerem woluminu danych, a teraz użyj istniejącego zamapowanego woluminu danych lub kontenera woluminu danych, przeglądarka SQL Edge ignoruje wartość
MSSQL_SA_PASSWORD
zmiennej środowiskowej. Zamiast tego jest używane wcześniej skonfigurowane hasło użytkownika sa. Dzieje się tak, ponieważ przeglądarka SQL Edge ponownie używa istniejącychmaster
plików baz danych w zamapowanym woluminie lub kontenerze woluminu danych. Jeśli wystąpi ten problem, możesz użyć następujących opcji:- Połącz się przy użyciu wcześniej używanego hasła, jeśli jest on nadal dostępny.
- Skonfiguruj program SQL Edge do używania innego zamapowanego woluminu lub kontenera woluminu danych.
- Usuń istniejące
master
pliki bazy danych (master.mdf
imastlog.mdf
) z zamapowanego woluminu lub kontenera woluminu danych.
Przejrzyj dzienniki błędów usługi SQL Edge.
Dzienniki konfiguracji i błędów usługi SQL Edge
Domyślnie dzienniki błędów programu SQL Edge znajdują się w /var/opt/mssql/log
katalogu w kontenerze i można uzyskać do tego dostępu przy użyciu dowolnego z następujących sposobów:
Jeśli katalog hosta
/var/opt/mssql
został zainstalowany podczas tworzenia kontenera, możesz zamiast tego wyszukać wlog
podkatalogu na mapowanej ścieżce na hoście.Korzystając z interakcyjnego wiersza polecenia w celu nawiązania połączenia z kontenerem. Jeśli kontener nie jest uruchomiony, najpierw uruchom kontener. Następnie użyj interakcyjnego wiersza polecenia, aby sprawdzić dzienniki. Identyfikator kontenera można uzyskać, uruchamiając polecenie
docker ps
.docker start <ContainerID> docker exec -it <ContainerID> "/bin/bash"
W sesji powłoki bash wewnątrz kontenera uruchom następujące polecenia:
cd /var/opt/mssql/log cat errorlog
Jeśli kontener usługi SQL Edge jest uruchomiony i możesz nawiązać połączenie z wystąpieniem przy użyciu narzędzi klienckich, możesz użyć procedury
sp_readerrorlog
składowanej, aby odczytać zawartość dziennika błędów usługi SQL Edge.
Wykonywanie poleceń w kontenerze
Jeśli masz uruchomiony kontener, możesz wykonywać polecenia w kontenerze z poziomu terminalu hosta.
Aby uzyskać identyfikator kontenera, uruchom polecenie:
docker ps -a
Aby uruchomić terminal powłoki bash w uruchomieniu kontenera:
docker exec -it <Container ID> /bin/bash
Teraz możesz uruchamiać polecenia tak, jakby były uruchamiane w terminalu wewnątrz kontenera. Po zakończeniu wpisz exit
. Spowoduje to zakończenie interaktywnej sesji poleceń, ale kontener nadal działa.
Włączanie pełnego rejestrowania
Jeśli domyślny poziom dziennika aparatu przesyłania strumieniowego nie zapewnia wystarczającej ilości informacji, rejestrowanie debugowania dla aparatu przesyłania strumieniowego można włączyć w przeglądarce SQL Edge. Aby włączyć rejestrowanie debugowania, dodaj zmienną RuntimeLogLevel=debug
środowiskową do wdrożenia usługi SQL Edge. Po włączeniu rejestrowania debugowania spróbuj odtworzyć problem i sprawdzić dzienniki pod kątem odpowiednich komunikatów lub wyjątków.
Uwaga
Opcja Pełne rejestrowanie powinna być używana tylko do rozwiązywania problemów, a nie dla zwykłego obciążenia produkcyjnego.