Menginstal Ekstensi Bahasa Java SQL Server di Linux

Berlaku untuk: SQL Server 2019 (15.x) di Linux dan versi yang lebih baru

Pelajari cara menginstal komponen Ekstensi Bahasa Java untuk SQL Server di Linux. Ekstensi Bahasa Java adalah bagian dari Ekstensi Bahasa SQL Server dan add-on ke Mesin Database.

Meskipun Anda dapat menginstal Mesin Database dan Ekstensi Bahasa secara bersamaan, ini adalah praktik terbaik untuk menginstal dan mengonfigurasi Mesin Database SQL Server terlebih dahulu sehingga Anda dapat menyelesaikan masalah apa pun sebelum menambahkan lebih banyak komponen.

Prasyarat

  • Paket ekstensi Java ada di repositori sumber SQL Server Linux. Jika Anda sudah mengonfigurasi repositori sumber untuk instalasi Database Engine, jalankan mssql-server-extensibility-java perintah instalasi paket dengan menggunakan registrasi repo yang sama.
  • Ekstensi Bahasa juga didukung pada kontainer Linux. Kontainer bawaan dengan Ekstensi Bahasa tidak tersedia, tetapi Anda dapat membuatnya dari kontainer SQL Server dengan menggunakan template contoh yang tersedia di GitHub.

  • Ekstensi Bahasa dan Layanan Pembelajaran Mesin diinstal secara default pada Kluster Big Data SQL Server. Jika Anda menggunakan Kluster Big Data, Anda tidak perlu mengikuti langkah-langkah dalam artikel ini.

Daftar paket

Pada perangkat yang terhubung internet, Anda mengunduh dan menginstal paket secara independen dari Database Engine dengan menggunakan installer paket untuk setiap sistem operasi. Tabel berikut ini menjelaskan semua paket yang tersedia.

Nama paket Berlaku pada Deskripsi
mssql-server-extensibility Semua bahasa Kerangka kerja ekstensibilitas yang digunakan untuk ekstensi bahasa Java
mssql-server-extensibility-java Java Kerangka kerja ekstensibilitas yang digunakan untuk ekstensi bahasa Java dan mencakup runtime Java yang didukung.

Berlaku untuk: SQL Server 2019 (15.x) hanya di Linux

Menginstal ekstensi bahasa Java

Untuk menginstal Language Extensions dan Java di Linux, instal mssql-server-extensibility-java paketnya. Paket secara otomatis menginstal JRE 11 (jika belum terpasang) dan menambahkan jalur JVM ke variabel lingkungan yang disebut JRE_HOME.

Untuk mengaktifkan Ekstensi Bahasa Java, buat biner kustom dengan mengikuti instruksi dari halaman Ekstensi Bahasa Java di GitHub.

Note

Pada server yang terhubung ke internet, dependensi paket diunduh dan diinstal sebagai bagian dari penginstalan paket utama. Jika server Anda tidak tersambung ke internet, lihat detail selengkapnya dalam penyetelan offline.

Anda dapat mengunduh dan menginstal runtime Java apa pun, termasuk Microsoft Build di OpenJDK terbaru atau runtime Java berlisensi resmi. Mulai dari SQL Server 2022 (16.x), Setup SQL Server tidak menginstal runtime Java.

Untuk mengaktifkan Ekstensi Bahasa Java, buat biner kustom dengan mengikuti instruksi dari halaman Ekstensi Bahasa Java di GitHub.

Perintah penginstalan Red Hat

Untuk menginstal Language Extensions for Java di Red Hat, gunakan perintah berikut.

Tip

Jika memungkinkan, jalankan yum clean all untuk menyegarkan paket pada sistem sebelum penginstalan.

# Install as root or sudo
sudo yum install mssql-server-extensibility-java

Perintah penginstalan Ubuntu

Untuk menginstal Language Extensions for Java di Ubuntu, gunakan perintah berikut.

Tip

Jika memungkinkan, jalankan apt-get update untuk menyegarkan paket pada sistem sebelum penginstalan. Beberapa gambar Ubuntu Docker tidak menyertakan apt-transport-https paketnya. Untuk menginstalnya, jalankan apt-get install apt-transport-https.

# Install as root or sudo
sudo apt-get install mssql-server-extensibility-java

Perintah penginstalan SUSE

Untuk menginstal Language Extensions for Java di SUSE, gunakan perintah berikut.

# Install as root or sudo
sudo zypper install mssql-server-extensibility-java

Konfigurasi pasca-instalasi (wajib)

  1. Memberikan izin di Linux

    Anda tidak perlu melakukan langkah ini jika Anda menggunakan pustaka eksternal. Perpustakaan eksternal adalah pendekatan yang direkomendasikan. Untuk bantuan membuat pustaka eksternal dari file Anda jar , lihat CREATE EXTERNAL LIBRARY.

    Jika Anda tidak menggunakan pustaka eksternal, Anda perlu memberikan izin kepada SQL Server untuk menjalankan kelas Java di Anda jar.

    Untuk memberikan akses baca dan eksekusi ke jar sebuah file, jalankan perintah berikut chmod pada file tersebut jar . Selalu masukkan file kelas Anda ke dalam a jar saat Anda bekerja dengan SQL Server. Untuk bantuan dalam membuat jar, lihat Membuat file .jar Java dari file kelas.

    chmod ug+rx <MyJarFile.jar>
    

    Anda juga perlu memberikan mssql_satellite izin untuk membaca dan menjalankan jar file.

    chown mssql_satellite:mssql_satellite <MyJarFile.jar>
    

    Konfigurasi tambahan terutama melalui alat mssql-conf.

  2. Tambahkan akun pengguna yang mssql digunakan untuk menjalankan layanan SQL Server. Langkah ini diperlukan jika Anda belum menjalankan setup sebelumnya.

    sudo /opt/mssql/bin/mssql-conf setup
    
  3. Aktifkan akses jaringan keluar. Akses jaringan keluar dinonaktifkan secara default. Untuk mengaktifkan permintaan keluar, atur outboundnetworkaccess properti Boolean dengan alat ini mssql-conf . Untuk informasi selengkapnya, lihat Mengonfigurasi SQL Server di Linux dengan mssql-conf.

    # Run as SUDO or root
    # Enable outbound requests over the network
    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Mulai ulang layanan Launchpad SQL Server dan instans Mesin Database untuk membaca nilai yang diperbarui dari file INI. Pesan restart mengingatkan Anda setiap kali Anda mengubah pengaturan terkait ekstensibilitas.

    systemctl restart mssql-launchpadd
    systemctl restart mssql-server.service
    
  5. Aktifkan eksekusi skrip eksternal. Anda dapat terhubung ke instans SQL Server menggunakan alat klien SQL Server yang sudah dikenal, seperti sqlcmd, SQL Server Management Studio (SSMS), atau ekstensi MSSQL untuk Visual Studio Code.

    EXECUTE sp_configure 'external scripts enabled', 1;
    
    RECONFIGURE WITH OVERRIDE;
    
  6. mssql-launchpadd Mulai ulang layanan lagi.

  7. Untuk setiap database tempat Anda ingin menggunakan ekstensi bahasa, daftarkan bahasa eksternal tersebut dengan CREATE EXTERNAL LANGUAGE. Lihat bagian berikutnya untuk langkah-langkah.

Mendaftarkan bahasa eksternal

Untuk setiap database tempat Anda ingin menggunakan ekstensi bahasa, daftarkan bahasa eksternal tersebut dengan CREATE EXTERNAL LANGUAGE.

Contoh berikut menambahkan bahasa eksternal yang disebut Java ke database di SQL Server di Linux.

CREATE EXTERNAL LANGUAGE Java
FROM (
    CONTENT = N'/opt/mssql-extensibility/lib/java-lang-extension.tar.gz',
    FILE_NAME = 'javaextension.so',
    ENVIRONMENT_VARIABLES = N'{"JRE_HOME":"/opt/mssql/lib/zulu-jre-11"}'
);

Untuk ekstensi Java, variabel JRE_HOME lingkungan menentukan jalur untuk menemukan dan menginisialisasi JVM.

CREATE EXTERNAL LANGUAGE DDL menyediakan ENVIRONMENT_VARIABLES parameter untuk mengatur variabel lingkungan bagi proses yang menjadi host ekstensi. Gunakan parameter ini untuk mengatur variabel lingkungan yang dibutuhkan ekstensi bahasa eksternal.

Untuk informasi selengkapnya, lihat CREATE EXTERNAL LANGUAGE .

Verifikasi penginstalan

Integrasi fitur Java tidak menyertakan pustaka, tetapi Anda dapat menjalankan grep -r JRE_HOME /etc untuk memastikan JRE_HOME variabel lingkungan itu ada.

Untuk memvalidasi penginstalan, jalankan skrip T-SQL yang menjalankan prosedur tersimpan sistem yang memanggil Java. Anda memerlukan alat kueri untuk tugas ini. Anda dapat terhubung ke instans SQL Server menggunakan alat klien SQL Server yang sudah dikenal, seperti sqlcmd, SQL Server Management Studio (SSMS), atau ekstensi MSSQL untuk Visual Studio Code.

Penginstalan penuh SQL Server dan Ekstensi Bahasa Java

Untuk menginstal dan mengonfigurasi Database Engine dan Java Language Extension dalam satu prosedur, tambahkan paket dan parameter Java ke perintah yang menginstal Database Engine.

  1. Berikan baris perintah yang menyertakan Mesin Database, ditambah fitur ekstensi bahasa.

    Perintah berikut menambahkan ekstensibilitas Java ke instalasi Database Engine.

    sudo yum install -y mssql-server mssql-server-extensibility-java
    
  2. Terima perjanjian lisensi dan selesaikan konfigurasi pasca-instal. Gunakan alatnya mssql-conf .

    sudo /opt/mssql/bin/mssql-conf setup
    

    Langkah ini meminta Anda untuk menerima perjanjian lisensi untuk Mesin Database, memilih edisi, dan mengatur kata sandi administrator.

  3. Restart layanan jika diminta.

    sudo systemctl restart mssql-server.service
    

Penginstalan tanpa pengawasan

Gunakan instalasi otomatis untuk Mesin Database dan tambahkan paket untuk mssql-server-extensibility-java.

Penginstalan offline

Untuk menginstal paket, ikuti petunjuk instalasi Offline . Temukan situs unduhan Anda, lalu unduh paket spesifik yang tercantum di bagian ini.

Tip

Beberapa alat manajemen paket menyediakan perintah yang membantu Anda menentukan ketergantungan paket. Untuk yum, gunakan sudo yum deplist [package]. Untuk Ubuntu, gunakan sudo apt-get install --reinstall --download-only [package name] diikuti oleh dpkg -I [package name].deb.

Unduh situs

Unduh paket dari https://packages.microsoft.com/. Situs ini menampung semua paket Java bersama dengan paket Database Engine.

Jalur unduhan

Package Distribution Lokasi unduhan
mssql/extensibility-java packages Topi Merah 8 https://packages.microsoft.com/rhel/8/mssql-server-2019/
mssql/extensibility-java packages SUSE v15 https://packages.microsoft.com/sles/15/mssql-server-2019/
mssql/extensibility-java packages Ubuntu 20.04 https://packages.microsoft.com/ubuntu/20.04/mssql-server-2019/pool/main/m/

Daftar paket

Bergantung pada ekstensi mana yang ingin Anda gunakan, unduh paket yang diperlukan untuk bahasa tertentu. Nama file yang tepat menyertakan informasi platform dalam akhiran, tetapi nama file berikut membantu Anda menentukan file mana yang harus diambil.

  • Paket inti

    • mssql-server-15.0.1000
    • mssql-server-extensibility-15.0.1000
  • Java

    • mssql-server-extensibility-java-15.0.1000

Keterbatasan

Autentikasi tersirat tidak tersedia di Linux. Kode Java yang berjalan di proses eksternal tidak dapat terhubung kembali ke server untuk mengakses data atau sumber daya lain.

Tata kelola sumber daya

Linux dan Windows memiliki paritas untuk tata kelola sumber daya untuk pool sumber daya eksternal, tetapi statistik untuk sys.dm_resource_governor_external_resource_pools saat ini memiliki unit yang berbeda di Linux.

Note

Statistik dalam tabel berikut bersumber dari subsistem Control Groups (cgroups) yang ditentukan.

Nama kolom Deskripsi Nilai di Linux
peak_memory_kb Memori maksimum yang digunakan oleh resource pool. Di Linux, statistik ini bersumber dari memory subsistem, di mana nilainya memory.max_usage_in_bytes
write_io_count Total write IO yang diterbitkan sejak reset statistik Resource Governor terakhir. Di Linux, statistik ini bersumber dari blkio subsistem, di mana nilai pada baris tulis adalah blkio.throttle.io_serviced
read_io_count Total IO yang dibaca yang dikeluarkan sejak reset statistik Resource Governor terakhir. Di Linux, statistik ini berasal dari blkio subsistem, di mana nilai pada baris baca adalah blkio.throttle.io_serviced
total_cpu_kernel_ms Waktu kernel pengguna CPU kumulatif dalam milidetik sejak reset statistik Resource Governor terakhir. Di Linux, statistik ini bersumber dari cpuacct subsistem, di mana nilai pada baris pengguna adalah cpuacct.stat
total_cpu_user_ms Waktu kumulatif pengguna CPU dalam milidetik sejak reset statistik Resource Governor terakhir. Di Linux, statistik ini berasal dari cpuacct subsistem, di mana nilai pada baris sistem adalah cpuacct.stat
active_processes_count Jumlah proses eksternal yang berjalan pada saat permintaan. Di Linux, statistik ini bersumber dari pids subsistem, di mana nilainya pids.current