Bagikan melalui


Memecahkan masalah penyebaran Azure SQL Edge

Penting

Azure SQL Edge akan dihentikan pada 30 September 2025. Untuk informasi selengkapnya dan opsi migrasi, lihat Pemberitahuan penghentian.

Catatan

Azure SQL Edge tidak lagi mendukung platform ARM64.

Artikel ini menyediakan informasi tentang kemungkinan kesalahan yang terlihat saat menyebarkan dan menggunakan kontainer Azure SQL Edge, dan menyediakan teknik pemecahan masalah untuk membantu mengatasi masalah ini.

Azure SQL Edge mendukung dua mode penyebaran:

Memecahkan masalah perangkat dan penyebaran IoT Edge

Jika Anda menemuai kesalahan saat menyebarkan SQL Edge melalui Azure IoT Edge, pastikan layanan iotedgedikonfigurasi dan dijalankan dengan benar. Dokumen berikut ini bisa berguna saat memecahkan masalah yang terkait dengan Azure IoT Edge:

Kesalahan perintah docker

Jika Anda mendapatkan kesalahan untuk perintah apa pun docker , pastikan bahwa layanan Docker berjalan, dan coba jalankan dengan izin yang ditingkatkan.

Misalnya, di Linux, Anda mungkin mendapatkan kesalahan berikut saat menjalankan perintah docker:

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

Jika Anda mendapatkan kesalahan ini di Linux, coba jalankan perintah yang sama dengan sudo. Jika gagal, verifikasi layanan Docker sedang berjalan, dan mulai jika perlu.

sudo systemctl status docker
sudo systemctl start docker

Di Windows, verifikasi bahwa Anda meluncurkan PowerShell atau prompt perintah Anda sebagai Administrator.

Kesalahan startup kontainer Azure SQL Edge

Jika kontainer SQL Edge gagal dijalankan, coba tes berikut:

  • Jika Anda menggunakan Azure IoT Edge, pastikan bahwa gambar modul berhasil diunduh, dan bahwa variabel lingkungan dan opsi pembuatan kontainer ditentukan dengan benar dalam manifes modul.

  • Jika Anda menggunakan penyebaran berbasis Docker atau Kubernetes, pastikan bahwa docker run perintah terbentuk dengan benar. Untuk informasi selengkapnya, lihat Menyebarkan Azure SQL Edge dengan Docker dan Menyebarkan kontainer Azure SQL Edge di Kubernetes.

  • Jika Anda mendapatkan kesalahan seperti failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use., Anda mencoba memetakan port kontainer 1433 ke port yang sudah digunakan. Ini dapat terjadi jika Anda menjalankan SQL Edge secara lokal di mesin host. Ini juga dapat terjadi jika Anda memulai dua kontainer SQL Edge dan mencoba memetakan keduanya ke port host yang sama. Jika ini terjadi, gunakan parameter-p untuk memetakan port kontainer 1433 ke port host yang berbeda. Contohnya:

    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.
    
  • Jika Anda mendapatkan kesalahan seperti 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 saat mencoba memulai kontainer, maka tambahkan pengguna Anda ke grup docker di Ubuntu. Kemudian keluar dan masuk kembali, karena perubahan ini memengaruhi sesi baru.

    usermod -aG docker $USER
    
  • Periksa untuk melihat apakah ada pesan kesalahan dari kontainer.

    docker logs e69e056c702d
    
  • Jika Anda menggunakan perangkat lunak manajemen kontainer apa pun, pastikan perangkat lunak tersebut mendukung proses kontainer yang berjalan sebagai root. Proses sqlservr dalam kontainer berjalan sebagai akar.

  • Secara default, kontainer Azure SQL Edge berjalan sebagai pengguna non-akar bernama mssql. Jika Anda menggunakan titik pemasangan atau volume data untuk mempertahankan data, pastikan bahwa mssql pengguna memiliki izin yang sesuai pada volume. Untuk informasi selengkapnya, lihat Menjalankan sebagai pengguna non-akar dan Pertahankan Data.

  • Jika kontainer SQL Edge Docker Anda keluar segera setelah memulai, periksa log docker Anda. Jika Anda menggunakan PowerShell di Windows dengan docker run perintah , gunakan tanda kutip ganda alih-alih tanda kutip tunggal. Dengan PowerShell Core, gunakan kuotasi tunggal.

  • Tinjau Log kesalahan SQL Edge.

Kegagalan koneksi SQL Edge

Jika Anda tidak dapat menyambungkan ke instans SQL Edge yang berjalan di kontainer Anda, cobalah pengujian berikut:

  • Pastikan kontainer SQL Edge Anda berjalan dengan melihat STATUS kolom docker ps -a output. Jika tidak, gunakan docker start <Container ID> untuk memulainya.

  • Jika Anda memetakan ke port host non-default (bukan 1433), pastikan Anda menentukan port di string koneksi Anda. Anda dapat melihat pemetaan port Anda di PORTS kolom docker ps -a output. Untuk informasi selengkapnya tentang menyambungkan ke Azure SQL Edge, lihat Menyambungkan dan mengkueri Azure SQL Edge.

  • Jika sebelumnya Anda menyebarkan SQL Edge dengan volume data atau kontainer volume data yang dipetakan, dan sekarang menggunakan volume data atau kontainer volume data yang dipetakan yang ada, SQL Edge mengabaikan nilai MSSQL_SA_PASSWORD variabel lingkungan. Sebaliknya, kata sandi pengguna SA yang dikonfigurasi sebelumnya digunakan. Ini terjadi karena SQL Edge menggunakan kembali file database yang ada master dalam kontainer volume atau volume data yang dipetakan. Jika Anda mengalami masalah ini, Anda bisa menggunakan opsi berikut:

    • Sambungkan menggunakan kata sandi yang digunakan sebelumnya, jika masih tersedia.
    • Konfigurasikan SQL Edge untuk menggunakan kontainer volume atau volume data yang dipetakan berbeda.
    • Hapus file database yang master ada (master.mdf dan mastlog.mdf) dari kontainer volume atau volume data yang dipetakan.
  • Tinjau Log kesalahan SQL Edge.

Penyiapan SQL Edge dan log kesalahan

Secara default, log kesalahan SQL Edge ada di direktori dalam /var/opt/mssql/log kontainer dan dapat diakses menggunakan salah satu cara berikut:

  • Jika Anda memasang direktori host saat /var/opt/mssql membuat kontainer, Anda dapat melihat log subdirektori pada jalur yang dipetakan pada host.

  • Dengan menggunakan prompt perintah interaktif untuk menyambungkan ke kontainer. Jika kontainer tidak berjalan, pertama-tama mulai kontainer. Kemudian gunakan perintah interaktif untuk memeriksa log. Anda bisa mendapatkan ID kontainer dengan menjalankan docker ps perintah.

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

    Dari sesi bash di dalam wadah Anda, jalankan perintah berikut:

    cd /var/opt/mssql/log
    cat errorlog
    
  • Jika kontainer SQL Edge aktif dan berjalan dan Anda dapat terhubung ke instans menggunakan alat klien, maka Anda dapat menggunakan prosedur sp_readerrorlog tersimpan untuk membaca konten log kesalahan SQL Edge.

Menjalankan perintah dalam kontainer

Jika Anda memiliki kontainer yang sedang berjalan, Anda dapat menjalankan perintah dalam kontainer dari terminal host.

Untuk mendapatkan ID kontainer, jalankan:

docker ps -a

Untuk memulai terminal bash dalam kontainer, jalankan:

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

Sekarang Anda dapat menjalankan perintah seolah-olah Anda menjalankannya di terminal di dalam kontainer. Setelah selesai, ketik exit. Terminal ini keluar dalam sesi perintah interaktif, tetapi kontainer Anda terus berjalan.

Aktifkan pengelogan verbose

Jika tingkat log default untuk mesin streaming tidak memberikan informasi yang cukup, pengelogan debug untuk mesin streaming dapat diaktifkan di SQL Edge. Untuk mengaktifkan pengelogan debug, tambahkan RuntimeLogLevel=debug variabel lingkungan ke penyebaran SQL Edge Anda. Setelah mengaktifkan pencatatan debug, coba reproduksi masalah dan periksa log untuk setiap pesan atau pengecualian yang relevan.

Catatan

Opsi Pembuatan Log Verbose hanya boleh digunakan untuk pemecahan masalah dan bukan untuk beban kerja produksi reguler.