Selesaikan masalah SQL Server di Linux

Berlaku untuk:SQL Server - Linux

Artikel ini menjelaskan cara memecahkan masalah SQL Server yang berjalan di Linux atau dalam kontainer Linux. Saat memecahkan masalah SQL Server di Linux, ingatlah untuk meninjau fitur yang didukung dan batasan yang diketahui dalam Catatan rilis untuk SQL Server 2017 di Linux.

Untuk jawaban atas pertanyaan yang sering diajukan , lihat TANYA JAWAB UMUM SQL Server di Linux.

Memecahkan masalah kegagalan koneksi

Jika Anda mengalami kesulitan menyambungkan ke instans Linux SQL Server Anda, ada beberapa hal yang perlu diperiksa.

  • Jika Anda tidak dapat tersambung secara lokal menggunakan localhost, coba gunakan alamat IP 127.0.0.1 sebagai gantinya. Ada kemungkinan bahwa localhost tidak dipetakan dengan benar ke alamat ini.

  • Verifikasi bahwa nama server atau alamat IP dapat dijangkau dari komputer klien Anda.

    Tip

    Untuk menemukan alamat IP komputer Ubuntu, Anda dapat menjalankan ifconfig perintah seperti dalam contoh berikut:

    sudo ifconfig eth0 | grep 'inet addr'
    

    Untuk Red Hat, Anda dapat menggunakan ip addr perintah seperti dalam contoh berikut:

    sudo ip addr show eth0 | grep "inet"
    

    Satu pengecualian untuk teknik ini berkaitan dengan Azure VM. Untuk Azure VM, temukan IP publik untuk VM di portal Azure.

  • Jika berlaku, periksa apakah Anda membuka port SQL Server (default 1433) pada firewall.

  • Untuk Azure VM, periksa apakah Anda memiliki aturan grup keamanan jaringan untuk port SQL Server default.

  • Verifikasi bahwa nama pengguna dan kata sandi tidak berisi kesalahan ketik, spasi tambahan, atau casing yang salah.

  • Cobalah untuk secara eksplisit mengatur protokol dan nomor port dengan nama server seperti contoh berikut: tcp:servername,1433.

  • Masalah konektivitas jaringan juga dapat menyebabkan kesalahan koneksi dan batas waktu. Setelah memverifikasi informasi koneksi dan konektivitas jaringan Anda, coba koneksi lagi.

Mengelola layanan SQL Server

Bagian berikut menunjukkan cara mengelola eksekusi kontainer SQL Server Docker. Untuk mengelola layanan untuk Linux, lihat Memulai, menghentikan, dan memulai ulang layanan SQL Server di Linux.

Mengelola eksekusi kontainer Docker SQL Server

Anda bisa mendapatkan status dan ID kontainer dari kontainer SQL Server Docker terbaru yang dibuat dengan menjalankan perintah berikut (ID berada di bawah CONTAINER ID kolom):

sudo docker ps -l

Anda dapat menghentikan atau memulai ulang layanan SQL Server sesuai kebutuhan menggunakan perintah berikut:

sudo docker stop <container ID>
sudo docker restart <container ID>

Tip

Untuk tips pemecahan masalah selengkapnya untuk Docker, lihat Memecahkan Masalah kontainer Docker SQL Server.

Mengakses file log

Mesin Database SQL Server mencatat ke /var/opt/mssql/log/errorlog file di penginstalan Linux dan kontainer. Anda harus berada dalam mode superuser untuk menelusuri direktori ini.

Log alat penginstal di sini: /var/opt/mssql/setup-<time stamp representing time of install> Anda dapat menelusuri file errorlog dengan alat yang kompatibel dengan UTF-16 seperti vim atau kucing seperti ini:

sudo cat errorlog

Jika mau, Anda juga dapat mengonversi file ke UTF-8 untuk membacanya dengan lebih atau kurang dengan perintah berikut:

sudo iconv -f UTF-16LE -t UTF-8 <errorlog> -o <output errorlog file>

Aktivitas yang Diperluas

Peristiwa yang diperluas dapat dikueri melalui perintah SQL. Untuk informasi selengkapnya, lihat peristiwa yang diperluas.

Crash dumps

Cari cadangan di direktori log di Linux. Periksa di bawah /var/opt/mssql/log direktori untuk dump Linux Core (.tar.gz2 ekstensi) atau minidump SQL (.mdmp ekstensi).

Misalnya, untuk melihat cadangan inti:

sudo ls /var/opt/mssql/log | grep .tar.gz2

Untuk cadangan SQL, gunakan skrip ini:

sudo ls /var/opt/mssql/log | grep .mdmp

Mulai SQL Server dalam konfigurasi minimal atau dalam mode pengguna tunggal

Memulai SQL Server dalam mode konfigurasi minimal

Mode ini berguna jika pengaturan nilai konfigurasi (misalnya, memori yang terlalu berkomitmen) telah mencegah server dimulai.

sudo -u mssql /opt/mssql/bin/sqlservr -f

Memulai SQL Server dalam mode pengguna tunggal

Terkadang Anda mungkin harus memulai instans SQL Server dalam mode pengguna tunggal dengan menggunakan opsi -mstartup . Untuk informasi selengkapnya, lihat parameter startup. Misalnya, Anda mungkin ingin mengubah opsi konfigurasi server atau memulihkan database yang rusak master atau database sistem lainnya.

Misalnya, gunakan skrip berikut untuk memulai SQL Server dalam mode pengguna tunggal:

sudo -u mssql /opt/mssql/bin/sqlservr -m

Skrip ini memulai SQL Server dalam mode pengguna tunggal dengan sqlcmd:

sudo -u mssql /opt/mssql/bin/sqlservr -m sqlcmd

Anda harus selalu memulai SQL Server di Linux dengan mssql pengguna untuk mencegah masalah startup di masa mendatang. Misalnya: sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]

Jika Anda tidak sengaja memulai SQL Server dengan pengguna lain, Anda harus mengubah kepemilikan file database SQL Server kembali ke mssql pengguna sebelum Anda memulai SQL Server dengan systemd. Misalnya, untuk mengubah kepemilikan semua file database pada /var/opt/mssqlmssql pengguna, jalankan perintah berikut:

chown -R mssql:mssql /var/opt/mssql/

Membangun kembali database sistem

Sebagai upaya terakhir, Anda dapat memilih untuk membangun master kembali database dan model kembali ke versi default.

Peringatan

Proses ini berbahaya, karena Anda dapat menghapus semua data sistem SQL Server yang telah Anda konfigurasi, termasuk informasi tentang database pengguna Anda (tetapi bukan database pengguna itu sendiri).

Anda perlu melampirkan database pengguna ke instans setelahnya. Ini juga menghapus informasi lain yang disimpan dalam database sistem, termasuk:

  • Informasi Kunci Master Database
  • sertifikat apa pun yang dimuat di master
  • kata sandi untuk login SA
  • informasi terkait pekerjaan dari msdb
  • Informasi Email Database dari msdb
  • Opsi sp_configure

Anda tidak dapat memasang kembali database pengguna apa pun yang dienkripsi dengan enkripsi data transparan (TDE) kecuali sertifikat dan kunci privat Anda juga dicadangkan.

Hanya gunakan langkah-langkah ini jika Anda memahami implikasinya.

  1. Hentikan Mesin Database SQL Server

    sudo systemctl stop mssql-server
    
  2. Jalankan sqlservr dengan force-setup parameter

    sudo -u mssql /opt/mssql/bin/sqlservr --force-setup
    

    Anda harus selalu memulai SQL Server di Linux dengan mssql pengguna untuk mencegah masalah startup di masa mendatang.

  3. Setelah Anda melihat pesan "Pemulihan selesai", tekan Ctrl+C. Ini mematikan SQL Server.

  4. Mengonfigurasi ulang kata sandi SA.

    sudo /opt/mssql/bin/mssql-conf set-sa-password
    
  5. Mulai SQL Server dan konfigurasi ulang server, termasuk memulihkan atau memasang ulang database pengguna apa pun.

    sudo systemctl start mssql-server
    

Meningkatkan Performa

Banyak faktor yang memengaruhi performa, termasuk desain database, perangkat keras, dan tuntutan beban kerja. Jika Anda ingin meningkatkan performa, mulailah dengan meninjau praktik terbaik dalam artikel, Praktik terbaik performa dan panduan konfigurasi untuk SQL Server di Linux. Kemudian jelajahi beberapa alat yang tersedia untuk memecahkan masalah performa.

Masalah umum

  1. Anda tidak dapat tersambung ke instans SQL Server jarak jauh Anda.

    Lihat bagian pemecahan masalah artikel, Koneksi ke SQL Server di Linux.

  2. Anda mengalami pesan kesalahan: ERROR: Hostname must be 15 characters or less.

    Ini adalah masalah yang diketahui yang terjadi setiap kali nama komputer yang mencoba menginstal paket SQL Server lebih panjang dari 15 karakter. Saat ini tidak ada solusi selain mengubah nama komputer. Anda dapat melakukan ini dengan mengedit dan /etc/hostname/etc/hosts, mengubah nama host, menyimpan setiap file, dan memulai ulang komputer.

  3. Kata sandi administrasi sistem (SA) harus diatur ulang, yang menghentikan layanan SQL Server untuk sementara.

    Jika Anda lupa kata sandi administrator sistem (SA) atau perlu mengatur ulang karena alasan lain, ikuti langkah-langkah ini.

    Masuk ke terminal host, jalankan perintah berikut dan ikuti perintah untuk mengatur ulang kata sandi SA:

    sudo systemctl stop mssql-server
    sudo /opt/mssql/bin/mssql-conf setup
    
  4. Karakter khusus dalam kata sandi masuk menyebabkan kesalahan atau kegagalan masuk.

    Jika Anda menggunakan beberapa karakter dalam kata sandi masuk SQL Server, Anda mungkin perlu melepaskannya dengan garis miring terbelakang saat Anda menggunakannya di baris perintah Linux. Misalnya, Anda harus keluar dari tanda dolar ($) kapan saja Anda menggunakannya dalam perintah terminal/skrip shell:

    Tidak berfungsi:

    sudo sqlcmd -S myserver -U sa -P Test$$
    

    Apakah berfungsi:

    sqlcmd -S myserver -U sa -P Test\$\$
    

Dapatkan bantuan

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 Cara berkontribusi pada dokumentasi SQL Server