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:
Penyebaran yang terhubung melalui Azure IoT Edge: Azure SQL Edge dapat disebarkan sebagai modul untuk Azure IoT Edge. Untuk informasi selengkapnya, lihat Menyebarkan Azure SQL Edge.
Penyebaran terputus: Gambar kontainer Azure SQL Edge dapat ditarik dari hub Docker dan disebarkan baik sebagai kontainer mandiri atau pada kluster Kubernetes. Untuk informasi selengkapnya, lihat Menyebarkan Azure SQL Edge dengan Docker dan Menyebarkan kontainer Azure SQL Edge di Kubernetes.
Memecahkan masalah perangkat dan penyebaran IoT Edge
Jika Anda menemuai kesalahan saat menyebarkan SQL Edge melalui Azure IoT Edge, pastikan layanan iotedge
dikonfigurasi 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 bahwamssql
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
kolomdocker ps -a
output. Jika tidak, gunakandocker 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
kolomdocker 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 adamaster
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
danmastlog.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 melihatlog
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.