Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server di Linux
Artikel ini menjelaskan kesalahan umum yang terjadi saat Anda menerapkan dan menggunakan kontainer SQL Server Docker serta memberikan teknik pemecahan masalah untuk membantu menyelesaikannya.
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 yang diawali dengan sudo. Jika itu gagal, pastikan bahwa layanan Docker sedang berjalan dan jalankan layanan tersebut jika perlu.
sudo systemctl status docker
sudo systemctl start docker
Di Windows, pastikan Anda menjalankan PowerShell atau command prompt sebagai Administrator.
Important
Variabel SA_PASSWORD lingkungan tidak digunakan lagi. Gunakan MSSQL_SA_PASSWORD sebagai gantinya.
Kesalahan saat memulai kontainer SQL Server
Jika kontainer SQL Server gagal dijalankan, coba tes berikut:
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 Server secara lokal di komputer host. Ini juga dapat terjadi jika Anda memulai dua kontainer SQL Server dan mencoba memetakan keduanya ke port host yang sama. Jika ini terjadi, gunakan parameter-puntuk memetakan port kontainer 1433 ke port host yang berbeda. Contohnya:docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latestdocker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latestdocker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latestdocker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2019-latestdocker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2019-latestdocker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2019-latestdocker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2022-latestdocker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2022-latestdocker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2022-latestdocker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2025-latestdocker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2025-latestdocker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2025-latestCaution
Kata sandi Anda harus mengikuti kebijakan password default SQL Server. Secara default, kata sandi harus panjangnya minimal delapan karakter dan berisi karakter dari tiga dari empat set berikut: huruf besar, huruf kecil, digit dasar-10, dan simbol. Panjang kata sandi bisa hingga 128 karakter. Gunakan kata sandi yang panjang dan kompleks mungkin.
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 deniedsaat 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 $USERPeriksa pesan kesalahan dari kontainer.
docker logs e69e056c702dPastikan Anda memenuhi persyaratan minimum untuk memori dan disk yang ditentukan dalam bagian prasyarat pada artikel panduan memulai cepat.
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 root.
Jika kontainer SQL Server Docker Anda keluar segera setelah memulai, periksa log docker Anda. Jika Anda menggunakan PowerShell di Windows dengan
docker runperintah , gunakan tanda kutip ganda alih-alih tanda kutip tunggal. Dengan PowerShell Core, gunakan tanda kutip tunggal.
Aktifkan pengambilan dump
Jika proses SQL Server gagal di dalam kontainer, Anda harus membuat kontainer baru dengan SYS_PTRACE diaktifkan. Ini menambahkan kemampuan Linux untuk melacak proses, yang diperlukan untuk membuat file cadangan pada pengecualian. File cadangan dapat digunakan oleh dukungan untuk membantu memecahkan masalah. Perintah jalankan docker berikut memungkinkan kemampuan ini.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest
Caution
Kata sandi Anda harus mengikuti kebijakan password default SQL Server. Secara default, kata sandi harus panjangnya minimal delapan karakter dan berisi karakter dari tiga dari empat set berikut: huruf besar, huruf kecil, digit dasar-10, dan simbol. Panjang kata sandi bisa hingga 128 karakter. Gunakan kata sandi yang panjang dan kompleks mungkin.
Kegagalan koneksi SQL Server
Jika Anda tidak dapat tersambung ke instans SQL Server yang berjalan di kontainer Anda, coba pengujian berikut:
Pastikan kontainer SQL Server Anda sedang berjalan dengan melihat kolom STATUS pada keluaran
docker ps -a. Jika tidak, gunakandocker start <Container ID>untuk memulainya.Jika Anda memetakan ke port host selain default (bukan 1433), pastikan Anda juga menyertakan nomor port dalam string koneksi. Anda dapat melihat pemetaan port Anda di kolom PORTS dari output
docker ps -a. Sebagai contoh, perintah berikut menghubungkan sqlcmd ke kontainer yang mendengarkan di port 1401:sqlcmd -S 10.3.2.4,1401 -U sa -P '<password>'sqlcmd -S 10.3.2.4,1401 -U sa -P "<password>"sqlcmd -S 10.3.2.4,1401 -U sa -P "<password>"Jika Anda menggunakan
docker rundengan volume data atau kontainer volume data yang sudah dipetakan, SQL Server mengabaikan nilaiMSSQL_SA_PASSWORD. Sebagai gantinya, kata sandi akunsayang telah dikonfigurasi sebelumnya digunakan dari data SQL Server dalam volume data atau kontainer volume data. Pastikan bahwa Anda menggunakan kata sandisayang terkait dengan data yang Anda lampirkan.
Grup Ketersediaan SQL Server
Jika Anda menggunakan Docker dengan Grup Ketersediaan SQL Server, ada dua persyaratan tambahan.
Petakan port yang digunakan untuk komunikasi replika (default 5022). Misalnya, tentukan
-p 5022:5022sebagai bagian dari perintah Andadocker run.Atur nama host kontainer secara eksplisit dengan parameter
-h YOURHOSTNAMEdari perintahdocker run. Nama host ini digunakan saat Anda mengonfigurasi Grup Ketersediaan. Jika Anda tidak menentukannya melalui-h, secara default akan menggunakan ID kontainer.
Penyiapan SQL Server dan log kesalahan
Anda dapat melihat penyiapan SQL Server dan log kesalahan di /var/opt/mssql/log. Jika kontainer tidak berjalan, jalankan kontainer terlebih dahulu. Kemudian gunakan prompt perintah interaktif untuk memeriksa log. Anda bisa mendapatkan ID kontainer dengan menjalankan docker ps perintah.
docker start <Container ID>
docker exec -it <Container ID> "bash"
Dari sesi Bash di dalam kontainer Anda, jalankan perintah berikut:
cd /var/opt/mssql/log
cat setup*.log
cat errorlog
Tip
Jika Anda memasang direktori host ke /var/opt/mssql saat membuat kontainer, Anda dapat melihat subdirektori log pada jalur yang dipetakan pada host.
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 di 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. Ini keluar dari sesi perintah interaktif, tetapi kontainer Anda tetap berjalan.
Konten terkait
Berkontribusi pada dokumentasi SQL
Tahukah Anda bahwa Anda dapat mengedit konten SQL sendiri? Jika Anda melakukannya, Anda tidak hanya membantu meningkatkan dokumentasi kami, tetapi Anda juga dikreditkan sebagai kontributor ke halaman.
Untuk informasi selengkapnya, lihat Mengedit dokumentasi Microsoft Learn.