Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2019 (15.x) a novější verze
Funkce SQL Server Language Extensions používá jako rozhraní pro volání běhového prostředí Java systémovou uloženou proceduru sp_execute_external_script.
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:
Umístěte soubory
.classnebo.jardo vaší class path jazyka Java.Nahrajte kompilované třídy v souboru
.jara další závislosti do databáze pomocí DDL příkazu external library.
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žijte classpath
Základní principy
Následuje několik základních principů při spouštění Javy na SQL Serveru.
Zkompilované vlastní třídy Java musí být umístěny v souborech
.classnebo.jarna cestě tříd Java. Parametr CLASSPATH poskytuje cestu ke zkompilovaným souborům Java.Metoda Java, kterou voláte, musí být uvedena v parametru
scriptu uložené procedury.Pokud třída patří do balíčku,
packageNamemusí být k dispozici.paramsslouží 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 s rozšířením Java a parametry pro zadání cesty, skriptu a vlastního kódu.
Poznámka:
Nemusíte určovat, kterou metodu volat. Ve výchozím nastavení se volá metoda execute . To znamená, že se musíte řídit sadou Microsoft Extensibility SDK for Java for SQL Server a implementovat metodu execute ve své třídě v jazyce 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 CLASSPATH
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:
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
Registrace proměnné systémového prostředí
Můžete vytvořit systémovou proměnnou prostředí a zadat cesty k
.jarsouboru, který obsahuje třídy. Vytvořte systémovou proměnnou prostředí s názvemCLASSPATH.
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, jak nahrát soubor .jar pomocí externí knihovny:
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 najdete na webu CREATE EXTERNAL LIBRARY.
Připojení zpětné smyčky k SQL Serveru
Pomocí loopback připojení se znovu připojte k SQL Serveru přes JDBC pro čtení a zápis dat z Javy spouštěné z sp_execute_external_script. Můžete to použít, pokud není možné použít argumenty InputDataSet a OutputDataSet u sp_execute_external_script.
Chcete-li ve Windows vytvořit loopback připojení, použijte následující příklad:
jdbc:sqlserver://localhost:1433;databaseName=Adventureworks;integratedSecurity=true;
Chcete-li v Linuxu vytvořit připojení loopback, ovladač JDBC vyžaduje tři parametry připojení definované v následujícím certifikátu:
Ověřování pomocí certifikátu klienta