Sdílet prostřednictvím


Volání modulu runtime Java v jazykových rozšířeních SQL Serveru

Platí pro: SQL Server 2019 (15.x) a novější verze

Funkce SQL Server Language Extensions používá sp_execute_external_script systém uloženou proceduru jako rozhraní pro volání modulu runtime Java.

Tento článek s postupy vysvětluje podrobnosti implementace tříd a metod Javy, které se spouští na SQL Serveru.

Kde umístit třídy Javy

Existují dvě metody volání tříd Java v SQL Serveru:

  1. Umístěte .class soubory do .jarcesty ke třídě Java.

  2. Nahrajte kompilované třídy do .jar souboru a dalších závislostí do databáze pomocí DDL externí knihovny .

Poznámka:

Obecně doporučujeme používat .jar soubory, nikoli jednotlivé .class soubory. To je běžný postup v Javě a usnadní celkový zážitek. Viz také Vytvoření souboru java .jar ze souborů třídy.

Použití cesty k třídě

Základní principy

Následuje několik základních principů při spouštění Javy na SQL Serveru.

  • Kompilované vlastní třídy Java musí existovat v .class souborech nebo .jar souborech v cestě k třídám Java. Parametr CLASSPATH poskytuje cestu ke zkompilovaným souborům Java.

  • V parametru uložené procedury musí být zadanou metodou script Java, kterou voláte.

  • Pokud třída patří do balíčku, packageName musí být k dispozici.

  • params slouží k předávání parametrů do třídy Java. Volání metody, která vyžaduje argumenty, není podporováno. Parametry jsou proto jediným způsobem, jak předat hodnoty argumentů metodě.

Poznámka:

Tato poznámka uvádí podporované a nepodporované operace specifické pro Javu v SQL Serveru 2019 (15.x) a novějších verzích. U uložené procedury se podporují vstupní parametry, zatímco výstupní parametry se nepodporují.

Volání třídy Java

Uložená procedura sp_execute_external_script systému je rozhraní, které slouží k volání modulu runtime Java. Následující příklad ukazuje sp_execute_external_script použití rozšíření Java a parametry pro zadání cesty, skriptu a vlastního kódu.

Poznámka:

Nemusíte definovat, kterou metodu se má volat. Ve výchozím nastavení se volá metoda execute . To znamená, že potřebujete postupovat podle sady Microsoft Extensibility SDK pro Javu pro SQL Server a implementovat metodu execute ve třídě 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;

Nastavit CESTU K TŘÍDĚ

Po kompilaci třídy nebo tříd Java a vytvoření .jar souboru v Javě classpathmáte dvě možnosti pro poskytnutí cesty k rozšíření SQL Server Java:

  1. Použití externích knihoven

    Nejjednodušší možností je nastavit, aby SQL Server automaticky našel vaše třídy vytvořením externích knihoven a nasměrováním knihovny na soubor JAR. Použití externích knihoven pro Javu

  2. Registrace proměnné systémového prostředí

    Můžete vytvořit systémovou proměnnou prostředí a zadat cesty k .jar souboru, který obsahuje třídy. Vytvořte systémovou proměnnou prostředí s názvem CLASSPATH.

Použití externí knihovny

V SQL Serveru 2019 (15.x) a novějších verzích můžete používat externí knihovny pro jazyk Java ve Windows a Linuxu. Třídy můžete zkompilovat do .jar souboru a nahrát .jar soubor a další závislosti do databáze pomocí CREATE EXTERNAL LIBRARY DDL.

Příklad nahrání souboru s externí knihovnou .jar :

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

Když vytvoří externí knihovnu, SQL Server má automaticky přístup ke třídám Java a není nutné nastavit žádná zvláštní oprávnění pro cestu k třídám.

Následující kód je příkladem volání metody ve třídě z balíčku nahraného jako externí knihovna:

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

Další informace naleznete v tématu VYTVOŘENÍ EXTERNÍ KNIHOVNY.

Připojení zpětné smyčky k SQL Serveru

Pomocí připojení zpětné smyčky se připojte zpět k SQL Serveru přes JDBC ke čtení nebo zápisu dat z Javy spouštěných z sp_execute_external_scriptjavy . Můžete ho použít, pokud není možné použít InputDataSet argumenty a OutputDataSet argumenty sp_execute_external_script . Pokud chcete vytvořit připojení zpětné smyčky ve Windows, použijte následující příklad:

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

Pokud chcete vytvořit připojení zpětné smyčky v Linuxu, ovladač JDBC vyžaduje tři vlastnosti připojení definované v následujícím certifikátu:

Ověřování pomocí certifikátu klienta