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

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

Funkcja SQL Server Language Extensions używa systemowej procedury składowanej sp_execute_external_script jako interfejsu do wywoływania środowiska uruchomieniowego 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. Prześlij skompilowane klasy w pliku .jar oraz inne zależności do bazy danych za pomocą instrukcji DDL biblioteki zewnętrznej.

Uwaga / Notatka

Ogólnie rzecz biorąc, należy używać .jar plików, a nie pojedynczych .class plików. To powszechna praktyka w Javie i sprawi, że całość będzie łatwiejsza. Zobacz również Tworzenie pliku .jar Java z plików klas.

Użyj classpath

Podstawowe zasady

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

  • Skompilowane niestandardowe klasy Java muszą znajdować się w plikach .class lub .jar w ścieżce klas języka 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

Systemowa procedura składowana sp_execute_external_script służy do wywoływania środowiska uruchomieniowego Java. Poniższy przykład przedstawia element sp_execute_external_script korzystający z rozszerzenia Java oraz parametry umożliwiające określenie ścieżki, skryptu i kodu niestandardowego.

Uwaga / Notatka

Nie trzeba określać, którą metodę wywołać. Domyślnie wywoływana jest metoda o nazwie execute . Oznacza to, że musisz postępować zgodnie z pakietem Microsoft Extensibility SDK for Java for SQL Server i zaimplementować metodę execute w swojej 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 zmienną 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 sprawienie, aby SQL Server automatycznie odnalazł Twoje klasy przez utworzenie bibliotek zewnętrznych i wskazanie w bibliotece pliku 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 CREATE EXTERNAL LIBRARY języka DDL.

Przykład przesyłania pliku .jar za pomocą biblioteki zewnętrznej:

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.

Połączenie typu loopback z serwerem SQL Server

Użyj połączenia zwrotnego, aby połączyć się z serwerem SQL Server przez JDBC i odczytywać lub zapisywać dane z poziomu kodu Java uruchamianego z sp_execute_external_script. Można tego użyć, gdy nie można użyć argumentów InputDataSet i OutputDataSet elementu sp_execute_external_script. Aby utworzyć połączenie w pętli zwrotnej w systemie Windows, skorzystaj z poniższego przykładu:

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

Aby nawiązać połączenie typu loopback w systemie Linux, sterownik JDBC wymaga trzech właściwości połączenia określonych w poniższym certyfikacie:

Uwierzytelnianie za pomocą certyfikatu klienta