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á 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:
Umístěte
.classsoubory do.jarcesty ke třídě Java.Nahrajte kompilované třídy do
.jarsouboru 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
.classsouborech nebo.jarsouborech 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
scriptJava, kterou voláte.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 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:
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 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