SQL Server di Linux: Masalah yang diketahui

Bagian berikut menjelaskan masalah yang diketahui dengan SQL Server di Linux.

Umum

Tabel berikut mencantumkan masalah paling umum dengan SQL Server di Linux.

Masalah Resolusi
Panjang nama host tempat SQL Server diinstal harus 15 karakter atau kurang. Ubah nama menjadi /etc/hostname nilai panjang 15 karakter atau kurang.
Mengatur mundur waktu sistem secara manual menyebabkan SQL Server berhenti memperbarui waktu sistem internal dalam Mesin Database. Mulai ulang SQL Server.
Hanya penginstalan instans tunggal yang didukung. Jika Anda ingin memiliki lebih dari satu instans pada host tertentu, pertimbangkan untuk menggunakan komputer virtual atau kontainer Linux.
Pengelola Konfigurasi SQL Server tidak dapat tersambung ke SQL Server di Linux. Tidak ada.
Bahasa default login sa adalah bahasa Inggris. Ubah bahasa login sa dengan ALTER LOGIN pernyataan .
Penyedia OLE DB mencatat peringatan berikut:

Failed to verify the Authenticode signature of 'C:\binn\msoledbsql.dll'. Signature verification of SQL Server DLLs will be skipped. Genuine copies of SQL Server are signed. Failure to verify the Authenticode signature might indicate that this isn't an authentic release of SQL Server. Install a genuine copy of SQL Server or contact customer support.
Tidak diperlukan tindakan. Penyedia OLE DB ditandatangani menggunakan SHA256. Mesin Database SQL Server tidak memvalidasi .dll yang ditandatangani dengan benar.
Perintah Atur ulang kata sandi menggunakan mssql-conf melemparkan kesalahan berikut:

Unable to set the system administrator password. Please consult the ERRORLOG in /path for more information.
Pesan kesalahan adalah negatif palsu. Pengaturan ulang kata sandi berhasil, dan Anda dapat terus menggunakan kata sandi baru.

Berlaku untuk: Gambar kontainer SQL Server 2022 (16.x) saja.

Database

  • Database master tidak dapat dipindahkan dengan utilitas mssql-conf . Database sistem lain dapat dipindahkan dengan mssql-conf.

  • Ketika Anda memulihkan database yang dicadangkan di SQL Server di Windows, Anda harus menggunakan WITH MOVE klausa dalam pernyataan Transact-SQL. Untuk informasi selengkapnya, lihat Memigrasikan database SQL Server dari Windows ke Linux menggunakan pencadangan dan pemulihan.

  • Algoritma tertentu (cipher suites) untuk Keamanan Lapisan Transportasi (TLS) tidak berfungsi dengan baik dengan SQL Server di Linux. Ini mengakibatkan kegagalan koneksi saat mencoba menyambungkan ke SQL Server, dan masalah saat membuat koneksi antar replika dalam grup ketersediaan tinggi.

    Untuk mengatasi masalah ini, ubah mssql.conf skrip konfigurasi untuk SQL Server di Linux untuk menonaktifkan suite sandi yang bermasalah, dengan mengikuti langkah-langkah berikut:

    1. Tambahkan bagian berikut ke /var/opt/mssql/mssql.conf. Simbol tanda seru (!) meniadakan ekspresi. Ini memberi tahu OpenSSL untuk tidak menggunakan cipher suite yang mengikuti.

      [network]
      tlsciphers=AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:!ECDHE-RSA-AES128-GCM-SHA256:!ECDHE-RSA-AES256-GCM-SHA384:!ECDHE-ECDSA-AES256-GCM-SHA384:!ECDHE-ECDSA-AES128-GCM-SHA256:!ECDHE-ECDSA-AES256-SHA384:!ECDHE-ECDSA-AES128-SHA256:!ECDHE-ECDSA-AES256-SHA:!ECDHE-ECDSA-AES128-SHA:!ECDHE-RSA-AES256-SHA384:!ECDHE-RSA-AES128-SHA256:!ECDHE-RSA-AES256-SHA:!ECDHE-RSA-AES128-SHA:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-DSS-AES256-SHA256:!DHE-DSS-AES128-SHA256:!DHE-DSS-AES256-SHA:!DHE-DSS-AES128-SHA:!DHE-DSS-DES-CBC3-SHA:!NULL-SHA256:!NULL-SHA
      
    2. Mulai ulang SQL Server dengan perintah berikut.

      sudo systemctl restart mssql-server
      
  • Database SQL Server 2014 (12.x) di Windows yang menggunakan OLTP Dalam Memori tidak dapat dipulihkan ke SQL Server di Linux. Jika database SQL Server 2014 (12.x) Anda menggunakan OLTP Dalam Memori, pertama-tama tingkatkan database ke versi SQL Server yang lebih baru di Windows. Kemudian Anda dapat memindahkannya ke SQL Server di Linux, dengan pencadangan/pemulihan, atau melepaskan/melampirkan.

  • Izin ADMINISTER BULK OPERATIONS pengguna saat ini tidak didukung di Linux.

  • Pencadangan terkompresi TDE yang dibuat menggunakan SQL Server 2019 (15.x) CU 16 dan versi yang lebih baru tidak dapat dipulihkan ke versi CU sebelumnya dari SQL Server 2019 (15.x). Untuk informasi selengkapnya, lihat PERBAIKAN: Terjadi kesalahan 3241 selama menjalankan RESTORE LOG atau RESTORE DATABASE.

    Cadangan terkompresi Transparent Data Encryption (TDE) yang dibuat menggunakan versi CU sebelumnya dari SQL Server 2019 (15.x) masih dapat dipulihkan dengan menggunakan SQL Server 2019 (15.x) CU 16 dan versi yang lebih baru.

  • Saat Anda menginstal SQL Server 2022 (16.x) di Ubuntu 22.04, Anda mungkin melihat pesan kesalahan berikut: Failed to start Microsoft SQL Server Database Engine. Jika Anda meninjau log kesalahan, Anda akan melihat jalur yang salah untuk database sistem.

    Untuk mengatasi masalah ini, mulai instans dalam mode pengguna tunggal, dan gunakan ALTER DATABASE ... MODIFY FILE untuk memindahkan lokasi database sistem yang dikonfigurasi ke lokasi /var/opt/mssql/datadefault . Setelah melakukan perubahan ini, mulai ulang layanan.

Jaringan

Fitur yang melibatkan koneksi TCP keluar dari sqlservr proses, seperti server tertaut, PolyBase, atau grup ketersediaan, mungkin tidak berfungsi jika kedua kondisi berikut terpenuhi:

  • Server target ditentukan sebagai nama host dan bukan alamat IP.

  • Instans sumber menonaktifkan IPv6 di kernel. Untuk memverifikasi apakah sistem Anda mengaktifkan IPv6 di kernel, semua pengujian berikut harus lulus:

    • cat /proc/cmdline mencetak cmdline boot dari kernel saat ini. Output tidak boleh berisi ipv6.disable=1.
    • /proc/sys/net/ipv6/ Direktori harus ada.
    • Program C yang memanggil socket(AF_INET6, SOCK_STREAM, IPPROTO_IP) harus berhasil - syscall harus mengembalikan fd != -1 dan tidak gagal dengan EAFNOSUPPORT.

Kesalahan yang tepat tergantung pada fitur . Untuk server tertaut, Anda akan melihat kesalahan batas waktu masuk. Untuk grup ketersediaan, ALTER AVAILABILITY GROUP JOIN DDL pada sekunder akan gagal setelah lima menit dengan download configuration timeout kesalahan.

Untuk mengatasi masalah ini, lakukan salah satu opsi berikut:

  • Gunakan IP alih-alih nama host untuk menentukan target koneksi TCP.

  • Aktifkan IPv6 di kernel dengan menghapus ipv6.disable=1 dari baris perintah boot. Metode ini tergantung pada distribusi Linux dan bootloader, seperti grub. Jika Anda ingin IPv6 dinonaktifkan, Anda masih dapat menonaktifkannya dengan mengatur net.ipv6.conf.all.disable_ipv6 = 1 dalam sysctl konfigurasi (misalnya, /etc/sysctl.conf). Meskipun pengaturan ini mencegah adaptor jaringan sistem mendapatkan alamat IPv6, pengaturan ini memungkinkan sqlservr fitur berfungsi.

TLS 1.3 tidak didukung

Berlaku untuk: SQL Server 2022 (16.x) saja.

Meskipun TLS 1.3 didukung pada SQL Server 2022 (16.x) untuk Windows, Anda harus menggunakan TLS 1.2 di Linux.

Sistem File Jaringan (NFS)

Jika Anda menggunakan berbagi jarak jauh Network File System (NFS) dalam produksi, perhatikan persyaratan dukungan berikut:

  • Gunakan NFS versi 4.2 atau versi yang lebih baru. Versi NFS yang lebih lama tidak mendukung fitur yang diperlukan, seperti fallocate dan pembuatan file jarang, umum untuk sistem file modern.

  • Temukan hanya /var/opt/mssql direktori pada pemasangan NFS. File lain, seperti biner sistem SQL Server, tidak didukung.

  • Pastikan klien NFS menggunakan nolock opsi saat memasang berbagi jarak jauh.

Pelokalan

  • Jika lokal Anda bukan bahasa Inggris (en_us) selama penyiapan, Anda harus menggunakan pengodean UTF-8 di sesi/terminal bash Anda. Jika Anda menggunakan pengodean ASCII, Anda mungkin melihat kesalahan yang mirip dengan output berikut:

    UnicodeEncodeError: codec 'ascii' tidak dapat mengodekan karakter u'\xf1' di posisi 8: ordinal tidak dalam rentang(128)

    Jika Anda tidak dapat menggunakan pengodean UTF-8, jalankan penyiapan menggunakan MSSQL_LCID variabel lingkungan untuk menentukan pilihan bahasa Anda.

    sudo MSSQL_LCID=<LcidValue> /opt/mssql/bin/mssql-conf setup
    
  • Saat Anda menjalankan mssql-conf setup, dan melakukan penginstalan SQL Server non-bahasa Inggris, karakter yang diperluas yang salah dapat ditampilkan setelah teks yang dilokalkan, "Mengonfigurasi SQL Server...". Atau, untuk penginstalan berbasis non-Latin, kalimat mungkin hilang sepenuhnya. Kalimat yang hilang harus menampilkan string yang dilokalkan berikut:

    PID lisensi berhasil diproses. Edisi baru adalah [<Edisi nama> ].

    String ini hanya output untuk tujuan informasi, tidak memengaruhi keberhasilan penginstalan SQL Server dengan cara apa pun.

Tidak semua filter tersedia dengan rilis ini, termasuk filter untuk dokumen Microsoft Office. Untuk daftar filter yang didukung, lihat Menginstal Pencarian Teks Lengkap SQL Server di Linux.

SQL Server Integration Services (SSIS)

Paket mssql-server-is tidak didukung di SUSE Linux Enterprise Server (SLES). Paket ini didukung di Ubuntu, dan Red Hat Enterprise Linux (RHEL).

Paket Integration Services dapat menggunakan koneksi ODBC di Linux. Fungsionalitas ini diuji dengan SQL Server dan driver MySQL ODBC, tetapi juga diharapkan untuk bekerja dengan driver ODBC Unicode yang mengamati spesifikasi ODBC. Pada waktu desain, Anda dapat menyediakan DSN atau string koneksi untuk menyambungkan ke data ODBC; Anda juga dapat menggunakan autentikasi Windows. Untuk informasi selengkapnya, lihat posting blog yang mengumumkan dukungan ODBC di Linux.

Fitur berikut tidak didukung dalam rilis ini saat Anda menjalankan paket SSIS di Linux:

  • Database Katalog Layanan Integrasi
  • Eksekusi paket terjadwal oleh SQL Server Agent
  • Otentikasi Windows
  • Komponen pihak ketiga
  • Mengubah pengambilan data (CDC)
  • Peluasan Skala Layanan Integrasi
  • Paket Fitur Azure untuk SSIS
  • Dukungan Hadoop dan HDFS
  • Konektor Microsoft untuk SAP BW

Untuk daftar komponen SSIS bawaan yang saat ini tidak didukung, atau yang didukung dengan batasan, lihat Batasan dan masalah yang diketahui untuk SSIS di Linux.

Untuk informasi selengkapnya tentang SSIS di Linux, lihat artikel berikut ini:

SQL Server Management Studio (SSMS)

Batasan berikut berlaku untuk SQL Server Management Studio di Windows yang terhubung ke SQL Server di Linux.

  • Rencana pemeliharaan tidak didukung.

  • Management Data Warehouse (MDW) dan pengumpul data di SQL Server Management Studio tidak didukung.

  • Komponen antarmuka pengguna SQL Server Management Studio yang memiliki opsi Autentikasi Windows atau log peristiwa Windows tidak berfungsi dengan Linux. Anda masih dapat menggunakan fitur-fitur ini dengan opsi lain, seperti login SQL Server.

  • Jumlah file log yang akan dipertahankan tidak dapat dimodifikasi.

Ketersediaan tinggi dan pemulihan bencana

Berlaku untuk: SQL Server 2022 (16.x) saja.

Untuk paket SQL Server 2022 (16.x) untuk RHEL 9 dan Ubuntu 22.04, ketika Anda mengaktifkan tumpukan HA/DR dengan Pacemaker, Anda dapat mengalami masalah dengan failover otomatis dan manual. Masalah ini saat ini terbatas pada tumpukan Pacemaker HA. Tumpukan HA lainnya, termasuk HPE Serviceguard dan DH2i DxEnterprise, tidak memiliki masalah ini.

Grup ketersediaan terus mengalihkan peran utama

Saat bekerja dengan grup ketersediaan (AG) di SQL Server 2022 (16.x) pada RHEL 8, Ubuntu 20.04, dan versi yang lebih baru, Anda dapat mengalami situasi di mana peran utama dalam AG beralih dari satu simpul ke simpul lain terus menerus. Saat ini, Anda dapat mengatasi masalah dengan langkah-langkah berikut:

  1. ag_cluster Perbarui properti failure-timeout sumber daya ke 0s:

    pcs resource update ag_cluster meta failure-timeout=0s
    

    Untuk informasi selengkapnya, lihat Mengonfigurasi kluster Pacemaker untuk grup ketersediaan SQL Server.

  2. Reset jumlah kegagalan pada kluster Pacemaker:

    crm_failcount -r ag_resource_name -delete
    

Layanan Pembelajaran Mesin;ML

Berlaku untuk: SQL Server 2022 (16.x) saja.

Untuk paket SQL Server 2022 (16.x) untuk RHEL 9 dan Ubuntu 22.04, ada beberapa prasyarat yang perlu diperhitungkan dengan cgroup-v1, sebelum menginstal Layanan Pembelajaran Mesin.

  1. Sebagai prasyarat, cgroup-v1 perlu diaktifkan sesuai Penggunaan cgroupfs untuk mengelola cgroups Red Hat Enterprise Linux 9 secara manual dari Red Hat.

  2. Kemudian ikuti instruksi untuk menginstal SQL Pembelajaran Mesin Services seperti yang didokumenkan.

  3. Nonaktifkan isolasi namespace jaringan.

    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Mulai ulang mssql-launchpadd layanan agar perubahan ini berlaku.

    sudo systemctl restart mssql-launchpadd