Azure SQL Edge dağıtımlarıyla ilgili sorunları giderme

Önemli

Azure SQL Edge artık ARM64 platformunu desteklememektedir.

Bu makale, Azure SQL Edge kapsayıcılarını dağıtırken ve kullanırken görülen olası hatalar hakkında bilgi sağlar ve bu sorunları çözmeye yardımcı olmak için sorun giderme teknikleri sağlar.

Azure SQL Edge iki dağıtım modeli destekler:

  • Azure IoT Edge aracılığıyla Bağlan dağıtım: Azure SQL Edge Azure Market kullanılabilir ve Azure IoT Edge için bir modül olarak dağıtılabilir. Daha fazla bilgi için bkz . Azure SQL Edge'i dağıtma.

  • Bağlantısız dağıtım: Azure SQL Edge kapsayıcı görüntüleri Docker hub'ından çekilebilir ve tek başına kapsayıcı olarak veya Kubernetes kümesine dağıtılabilir. Daha fazla bilgi için bkz . Docker ile Azure SQL Edge'i dağıtma ve Kubernetes'te Azure SQL Edge kapsayıcısı dağıtma.

IoT Edge cihaz ve dağıtım sorunlarını giderme

SQL Edge'i Azure IoT Edge aracılığıyla dağıtırken hata alırsanız hizmetin düzgün yapılandırıldığından ve çalıştığından iotedge emin olun. Azure IoT Edge ile ilgili sorunları giderirken aşağıdaki belgeler yararlı olabilir:

Docker komut hataları

Herhangi bir docker komut için hata alırsanız Docker hizmetinin çalıştığından emin olun ve yükseltilmiş izinlerle çalıştırmayı deneyin.

Örneğin, Linux'ta komutları çalıştırırken docker aşağıdaki hatayı alabilirsiniz:

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

Linux'ta bu hatayı alırsanız, ile sudoaynı komutları çalıştırmayı deneyin. Bu başarısız olursa Docker hizmetinin çalıştığını doğrulayın ve gerekirse başlatın.

sudo systemctl status docker
sudo systemctl start docker

Windows'da PowerShell'i veya komut isteminizi Yönetici istrator olarak başlattığınızı doğrulayın.

Azure SQL Edge kapsayıcı başlatma hataları

SQL Edge kapsayıcısı çalıştırılamazsa aşağıdaki testleri deneyin:

  • Azure IoT Edge kullanıyorsanız modül görüntülerinin başarıyla indirildiğinden ve ortam değişkenlerinin ve kapsayıcı oluşturma seçeneklerinin modül bildiriminde doğru şekilde belirtildiğinden emin olun.

  • Docker veya Kubernetes tabanlı dağıtım kullanıyorsanız komutun docker run doğru biçimlendirilmiş olduğundan emin olun. Daha fazla bilgi için bkz . Docker ile Azure SQL Edge'i dağıtma ve Kubernetes'te Azure SQL Edge kapsayıcısı dağıtma.

  • gibi failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use.bir hata alırsanız, 1433 numaralı kapsayıcı bağlantı noktasını zaten kullanımda olan bir bağlantı noktasına eşlemeye çalışıyorsunuz demektir. Sql Edge'i konak makinede yerel olarak çalıştırıyorsanız bu durum oluşabilir. İki SQL Edge kapsayıcısı başlatır ve ikisini de aynı konak bağlantı noktasına eşlemeye çalışırsanız da bu durum oluşabilir. Böyle bir durumda, 1433 numaralı kapsayıcı bağlantı noktasını farklı bir konak bağlantı noktasına eşlemek için parametresini kullanın -p . Örnek:

    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.
    
  • Kapsayıcı başlatmaya çalışırken gibi 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 bir hata alırsanız, kullanıcınızı Ubuntu'daki docker grubuna ekleyin. Ardından bu değişiklik yeni oturumları etkilediğinden oturumu kapatın ve yeniden oturum açın.

    usermod -aG docker $USER
    
  • Kapsayıcıdan hata iletileri olup olmadığını denetleyin.

    docker logs e69e056c702d
    
  • Herhangi bir kapsayıcı yönetimi yazılımı kullanıyorsanız kök olarak çalışan kapsayıcı işlemlerini desteklediğine emin olun. Kapsayıcıdaki sqlservr işlemi kök olarak çalışır.

  • Varsayılan olarak Azure SQL Edge kapsayıcıları adlı mssqlkök olmayan bir kullanıcı olarak çalışır. Verileri kalıcı hale getirmek için bağlama noktaları veya veri birimleri kullanıyorsanız, kullanıcının birim üzerinde uygun izinlere sahip olduğundan mssql emin olun. Daha fazla bilgi için bkz . Kök olmayan kullanıcı olarak çalıştırma ve Verileri Kalıcı Hale Alma.

  • SQL Edge Docker kapsayıcınız başladıktan hemen sonra çıkarsa docker günlüklerinizi denetleyin. Windows üzerinde PowerShell'i komutuyla docker run kullanıyorsanız, tek tırnak yerine çift tırnak kullanın. PowerShell Core ile tek tırnak işareti kullanın.

  • SQL Edge hata günlüklerini gözden geçirin.

SQL Edge bağlantı hataları

Kapsayıcınızda çalışan SQL Edge örneğine bağlanamıyorsanız aşağıdaki testleri deneyin:

  • Çıkışın sütununa bakarak SQL Edge kapsayıcınızın çalıştığından STATUSdocker ps -a emin olun. Aksi takdirde, başlatmak için kullanın docker start <Container ID> .

  • Varsayılan olmayan bir ana bilgisayar bağlantı noktasına (1433 değil) eşlediyseniz, bağlantı noktasını bağlantı dizesi belirttiğinizden emin olun. Çıkış sütununda docker ps -a bağlantı noktası eşlemenizi PORTS görebilirsiniz. Azure SQL Edge'e bağlanma hakkında daha fazla bilgi için bkz. Bağlan ve Azure SQL Edge'i sorgulama.

  • SQL Edge'i daha önce eşlenmiş bir veri birimi veya veri birimi kapsayıcısıyla dağıttıysanız ve şimdi mevcut eşlenen veri birimi veya veri birimi kapsayıcısını kullanıyorsanız, SQL Edge ortam değişkeninin MSSQL_SA_PASSWORD değerini yoksayar. Bunun yerine, önceden yapılandırılmış SA kullanıcı parolası kullanılır. Bunun nedeni, SQL Edge'in eşlenen birim veya veri birimi kapsayıcısında var olan master veritabanları dosyalarını yeniden kullanmasıdır. Bu sorunla karşılaşırsanız aşağıdaki seçenekleri kullanabilirsiniz:

    • Hala kullanılabiliyorsa, önceden kullanılan parolayı kullanarak Bağlan.
    • SQL Edge'i farklı bir eşlenmiş birim veya veri birimi kapsayıcısı kullanacak şekilde yapılandırın.
    • Eşlenen birim veya veri birimi kapsayıcısından mevcut master veritabanı dosyalarını (master.mdf ve mastlog.mdf) kaldırın.
  • SQL Edge hata günlüklerini gözden geçirin.

SQL Edge kurulumu ve hata günlükleri

Varsayılan olarak, SQL Edge hata günlükleri kapsayıcı içindeki /var/opt/mssql/log dizinde bulunur ve aşağıdaki yollardan herhangi biri kullanılarak erişilebilir:

  • Kapsayıcınızı oluştururken bir konak dizini /var/opt/mssql bağladıysanız, bunun yerine konaktaki log eşlenen yolda alt dizine bakabilirsiniz.

  • Kapsayıcıya bağlanmak için etkileşimli bir komut istemi kullanarak. Kapsayıcı çalışmıyorsa, önce kapsayıcıyı başlatın. Ardından, günlükleri incelemek için etkileşimli bir komut istemi kullanın. komutunu docker psçalıştırarak kapsayıcı kimliğini alabilirsiniz.

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

    Kapsayıcınızın içindeki bash oturumundan aşağıdaki komutları çalıştırın:

    cd /var/opt/mssql/log
    cat errorlog
    
  • SQL Edge kapsayıcısı çalışır durumdaysa ve istemci araçlarını kullanarak örneğe bağlanabiliyorsanız, SQL Edge hata günlüğünün içeriğini okumak için saklı yordamı sp_readerrorlog kullanabilirsiniz.

Kapsayıcıda komut yürütme

Çalışan bir kapsayıcınız varsa, konak terminalinden kapsayıcı içinde komut yürütebilirsiniz.

Kapsayıcı kimliğini almak için komutunu çalıştırın:

docker ps -a

Kapsayıcıda bash terminali başlatmak için şunu çalıştırın:

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

Artık komutları kapsayıcının içindeki terminalde çalıştırıyormuş gibi çalıştırabilirsiniz. İşiniz bittiğinde yazın exit. Bu işlem etkileşimli komut oturumundan çıkar, ancak kapsayıcınız çalışmaya devam eder.

Ayrıntılı günlük kaydını etkinleştirme

Akış altyapısı için varsayılan günlük düzeyi yeterli bilgi sağlamıyorsa, SQL Edge'de akış altyapısı için hata ayıklama günlüğü etkinleştirilebilir. Hata ayıklama günlüğünü etkinleştirmek için ortam değişkenini RuntimeLogLevel=debug SQL Edge dağıtımınıza ekleyin. Hata ayıklama günlüğünü etkinleştirdikten sonra sorunu yeniden oluşturmaya ve ilgili iletiler veya özel durumlar için günlükleri denetlemeye bakın.

Dekont

Ayrıntılı Günlük seçeneği normal üretim iş yükü için değil yalnızca sorun giderme için kullanılmalıdır.

Sonraki adımlar