Udostępnij za pośrednictwem


Rozwiązywanie problemów z wdrożeniami usługi Azure SQL Edge

Ważne

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:

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:

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=yourStrong(!)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ę, że mssql 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 polecenia docker 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ściowych docker 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ących master 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 i mastlog.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ć w log 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.

Następne kroki