Udostępnij za pomocą


Jak wywołać środowisko uruchomieniowe Języka Java w rozszerzeniach języka SQL Server

Dotyczy: SQL Server 2019 (15.x) i nowsze wersje

Funkcja rozszerzenia języka programu SQL Server używa procedury składowanej systemu sp_execute_external_script jako interfejsu do wywoływania środowiska uruchomieniowego Języka Java.

W tym artykule z instrukcjami opisano szczegóły implementacji dla klas i metod Języka Java wykonywanych w programie SQL Server.

Gdzie umieścić klasy Języka Java

Istnieją dwie metody wywoływania klas Języka Java w programie SQL Server:

  1. Umieść .class pliki lub .jar w ścieżce klasy Java.

  2. Przekaż skompilowane klasy w .jar pliku i innych zależności do bazy danych przy użyciu zewnętrznej biblioteki DDL.

Uwaga / Notatka

Ogólnie rzecz biorąc, należy używać .jar plików, a nie pojedynczych .class plików. Jest to powszechna praktyka w języku Java i ułatwi ogólne środowisko pracy. Zobacz również Tworzenie pliku .jar Java z plików klas.

Używanie ścieżki klasy

Podstawowe zasady

Poniżej przedstawiono kilka podstawowych zasad wykonywania języka Java w programie SQL Server.

  • Skompilowane niestandardowe klasy języka Java muszą istnieć w .class plikach lub .jar plikach w ścieżce klasy Java. Parametr CLASSPATH udostępnia ścieżkę do skompilowanych plików Java.

  • Wywoływana metoda Java musi być podana w parametrze script procedury składowanej.

  • Jeśli klasa należy do pakietu, należy podać wartość packageName .

  • params służy do przekazywania parametrów do klasy Języka Java. Wywoływanie metody wymagającej argumentów nie jest obsługiwane. W związku z tym parametry są jedynym sposobem przekazywania wartości argumentów do metody.

Uwaga / Notatka

Ta uwaga umożliwia odtworzenie obsługiwanych i nieobsługiwanych operacji specyficznych dla języka Java w programie SQL Server 2019 (15.x) i nowszych wersjach. W procedurze składowanej parametry wejściowe są obsługiwane, a parametry wyjściowe nie są obsługiwane.

Wywoływanie klasy Java

Procedura składowana systemu sp_execute_external_script jest interfejsem używanym do wywoływania środowiska uruchomieniowego Java. W poniższym przykładzie pokazano sp_execute_external_script użycie rozszerzenia Java oraz parametry służące do określania ścieżki, skryptu i kodu niestandardowego.

Uwaga / Notatka

Nie trzeba definiować metody do wywołania. Domyślnie wywoływana jest metoda o nazwie execute . Oznacza to, że musisz postępować zgodnie z zestawem Microsoft Extensibility SDK dla języka Java dla programu SQL Server i zaimplementować metodę execute w klasie Java.

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;

Ustaw klasę CLASSPATH

Po skompilowaniu klasy lub klas Języka Java i utworzeniu .jar pliku w języku Java classpathdostępne są dwie opcje udostępniania ścieżki do rozszerzenia JAVA programu SQL Server:

  1. Korzystanie z bibliotek zewnętrznych

    Najprostszą opcją jest automatyczne znalezienie klas przez utworzenie bibliotek zewnętrznych i wskazanie biblioteki na plik jar. Używanie bibliotek zewnętrznych dla języka Java

  2. Rejestrowanie zmiennej środowiskowej systemu

    Możesz utworzyć zmienną środowiskową systemu i podać ścieżki do .jar pliku zawierającego klasy. Utwórz systemową zmienną środowiskową o nazwie CLASSPATH.

Korzystanie z biblioteki zewnętrznej

W programie SQL Server 2019 (15.x) i nowszych wersjach można używać bibliotek zewnętrznych dla języka Java w systemach Windows i Linux. Klasy można skompilować do .jar pliku i przekazać .jar plik i inne zależności do bazy danych przy użyciu biblioteki DDL CREATE EXTERNAL LIBRARY .

Przykład przekazywania pliku z biblioteką zewnętrzną .jar :

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

Podczas tworzenia biblioteki zewnętrznej program SQL Server automatycznie ma dostęp do klas Języka Java i nie trzeba ustawiać żadnych specjalnych uprawnień do ścieżki klas.

Poniższy kod to przykład wywoływania metody w klasie z pakietu przekazanego jako biblioteka zewnętrzna:

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

Aby uzyskać więcej informacji, zobacz CREATE EXTERNAL LIBRARY (TWORZENIE BIBLIOTEKI ZEWNĘTRZNEJ).

Połączenie sprzężenia zwrotnego z programem SQL Server

Użyj połączenia sprzężenia zwrotnego, aby nawiązać połączenie z programem SQL Server za pośrednictwem protokołu JDBC w celu odczytu lub zapisu danych z języka Java wykonanego z programu sp_execute_external_script. Można tego użyć w przypadku używania InputDataSetsp_execute_external_script argumentów i OutputDataSet , które nie są możliwe. Aby nawiązać połączenie sprzężenia zwrotnego w systemie Windows, użyj następującego przykładu:

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

Aby nawiązać połączenie sprzężenia zwrotnego w systemie Linux, sterownik JDBC wymaga trzech właściwości połączenia zdefiniowanych w następującym certyfikacie:

Client-Certificate-Authentication