Cara memanggil runtime Java di Ekstensi Bahasa SQL Server

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

Fitur Ekstensi Bahasa SQL Server menggunakan prosedur tersimpan sistem sp_execute_external_script sebagai antarmuka untuk memanggil runtime Java.

Artikel panduan ini menjelaskan detail implementasi untuk kelas dan metode Java yang dijalankan di SQL Server.

Tempat menempatkan kelas Java

Ada dua metode untuk memanggil kelas Java di SQL Server:

  1. Tempatkan .class atau .jar file di classpath Java Anda.

  2. Unggah kelas hasil kompilasi dalam file .jar serta dependensi lainnya ke dalam database menggunakan DDL pustaka eksternal.

Catatan

Sebagai rekomendasi umum, gunakan .jar file dan bukan file individual .class . Ini adalah praktik umum di Java dan akan membuat pengalaman keseluruhan lebih mudah. Lihat juga, Membuat file Java .jar dari file kelas.

Gunakan classpath

Prinsip dasar

Berikut ini adalah beberapa prinsip dasar saat menjalankan Java di SQL Server.

  • Kelas Java kustom yang dikompilasi harus ada dalam .class file atau .jar file di classpath Java Anda. Parameter CLASSPATH menyediakan jalur ke file Java yang dikompilasi.

  • Metode Java yang Anda panggil harus disediakan dalam script parameter pada prosedur tersimpan.

  • Jika kelas merupakan bagian dari paket, packageName harus disediakan.

  • params digunakan untuk meneruskan parameter ke kelas Java. Memanggil metode yang memerlukan argumen tidak didukung. Oleh karena itu, parameter adalah satu-satunya cara untuk meneruskan nilai argumen ke metode Anda.

Catatan

Catatan ini menyatakan kembali operasi yang didukung maupun yang tidak didukung yang khusus untuk Java di SQL Server 2019 (15.x) dan versi yang lebih baru. Pada prosedur tersimpan, parameter input didukung, sementara parameter output tidak didukung.

Memanggil kelas Java

Prosedur tersimpan sistem sp_execute_external_script adalah antarmuka yang digunakan untuk memanggil runtime Java. Contoh berikut menunjukkan sp_execute_external_script yang menggunakan ekstensi Java, serta parameter untuk menentukan jalur, skrip, dan kode kustom Anda.

Catatan

Anda tidak perlu menentukan metode mana yang akan dipanggil. Secara default, metode yang disebut execute dipanggil. Ini berarti Anda perlu mengikuti SDK Ekstensibilitas Microsoft untuk Java untuk SQL Server dan menerapkan metode eksekusi di kelas Java Anda.

DECLARE @param1 AS INT;

SET @param1 = 3;

EXECUTE sp_execute_external_script
    @language = N'Java',
    @script = N'<packageName>.<ClassName>',
    @input_data_1 = N'<Input Query>',
    @param1 = @param1;

Atur CLASSPATH

Setelah mengkompilasi kelas atau kelas Java, dan membuat .jar file di Java classpath, Anda memiliki dua opsi untuk menyediakan jalur ke ekstensi Java SQL Server:

  1. Menggunakan pustaka eksternal

    Opsi termampukan adalah membuat SQL Server secara otomatis menemukan kelas Anda dengan membuat pustaka eksternal dan mengarahkan pustaka ke jar. Menggunakan pustaka eksternal untuk Java

  2. Mendaftarkan variabel lingkungan sistem

    Anda dapat membuat variabel lingkungan sistem dan menyediakan jalur ke file Anda .jar yang berisi kelas. Buat variabel lingkungan sistem yang disebut CLASSPATH.

Menggunakan pustaka eksternal

Di SQL Server 2019 (15.x) dan versi yang lebih baru, Anda dapat menggunakan pustaka eksternal untuk bahasa Java di Windows dan Linux. Anda dapat mengkompilasi kelas Anda ke dalam .jar file dan mengunggah .jar file dan dependensi lainnya ke dalam database menggunakan CREATE EXTERNAL LIBRARY DDL.

Contoh cara mengunggah .jar file dengan pustaka eksternal:

CREATE EXTERNAL LIBRARY myJar
    FROM (CONTENT = '<local path to .jar file>')
    WITH (LANGUAGE = 'Java');
GO

Saat membuat pustaka eksternal, SQL Server secara otomatis memiliki akses ke kelas Java, dan Anda tidak perlu mengatur izin khusus apa pun ke classpath.

Kode berikut adalah contoh memanggil metode di kelas dari paket, yang diunggah sebagai pustaka eksternal:

EXECUTE sp_execute_external_script
    @language = N'Java',
    @script = N'MyPackage.MyCLass',
    @input_data_1 = N'SELECT * FROM MYTABLE'
WITH RESULT SETS((column1 INT));

Untuk informasi selengkapnya, lihat CREATE EXTERNAL LIBRARY .

Koneksi loopback ke SQL Server

Gunakan koneksi loopback untuk menyambungkan kembali ke SQL Server melalui JDBC untuk membaca atau menulis data dari Java yang dijalankan dari sp_execute_external_script. Anda dapat menggunakan ini ketika argumen InputDataSet dan OutputDataSet dari sp_execute_external_script tidak dapat digunakan. Untuk membuat koneksi loopback di Windows, gunakan contoh berikut:

jdbc:sqlserver://localhost:1433;databaseName=Adventureworks;integratedSecurity=true;

Untuk membuat koneksi loopback di Linux, driver JDBC memerlukan tiga properti koneksi yang ditentukan dalam Sertifikat berikut:

Autentikasi Sertifikat-Klien