A Java-futtatókörnyezet meghívása az SQL Server nyelvi bővítményeiben

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók

Az SQL Server Language Extensions szolgáltatás a sp_execute_external_script rendszer által tárolt eljárást használja interfészként a Java-futtatókörnyezet meghívásához.

Ez az útmutató ismerteti az SQL Serveren futó Java-osztályok és metódusok implementálási részleteit.

Java-osztályok helye

A Java-osztályok meghívásának két módja van az SQL Serveren:

  1. Helyezze a .class vagy .jar fájlokat a Java classpathjába.

  2. Töltsön fel lefordított osztályokat egy .jar fájlban és egyéb függőségeket az adatbázisba a külső könyvtár DDL használatával.

Megjegyzés:

Általános javaslatként használjon .jar fájlokat, és ne egyéni .class fájlokat. Ez a Java általános gyakorlata, és megkönnyíti az általános élményt. Lásd még: Java-.jar-fájl létrehozása osztályfájlokból.

Az osztályút használata

Alapelvek

A Java SQL Serveren való végrehajtásakor az alábbiak néhány alapelvet követnek.

  • A lefordított egyéni Java-osztályoknak a Java-osztályelérési útvonalon található .class vagy .jar fájlokban kell lenniük. A CLASSPATH paraméter megadja a lefordított Java-fájlok elérési útját.

  • A meghívandó Java-metódust meg kell adni a script tárolt eljárás paraméterében.

  • Ha az osztály egy csomaghoz tartozik, meg kell adni a packageName elemet.

  • params a paraméterek Java-osztályba való továbbítására szolgál. Az argumentumokat igénylő metódus meghívása nem támogatott. Ezért a paraméterek az egyetlen módja annak, hogy argumentumértékeket adjanak át a metódusnak.

Megjegyzés:

Ez a megjegyzés az SQL Server 2019 -ben (15.x) és újabb verziókban a Java-ra vonatkozó támogatott és nem támogatott műveleteket ismerteti. A tárolt eljárásban a bemeneti paraméterek támogatottak, míg a kimeneti paraméterek nem támogatottak.

Java-osztály meghívása

A sp_execute_external_script rendszer által tárolt eljárás a Java-futtatókörnyezet meghívására használt felület. Az alábbi példa egy sp_execute_external_script Java-bővítményt, valamint az elérési út, a szkript és az egyéni kód megadására szolgáló paramétereket mutatja be.

Megjegyzés:

Nem kell megadnia, hogy melyik metódust kell meghívni. Alapértelmezés szerint a rendszer meghív egy metódust execute . Ez azt jelenti, hogy követnie kell a Microsoft Extensibility SDK for Java for SQL Servert , és implementálnia kell egy végrehajtási metódust a Java-osztályban.

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;

CLASSPATH beállítása

Miután lefordította a Java-osztályt vagy -osztályokat, és létrehozott egy .jar fájlt a Javában classpath, két lehetősége van az SQL Server Java-bővítmény elérési útjának megadására:

  1. Külső kódtárak használata

    A legegyszerűbb lehetőség az, hogy az SQL Server automatikusan megtalálja az osztályokat külső függvénytárak létrehozásával, és a függvénytárat egy JAR-fájlra irányítva. Külső kódtárak használata Java-hoz

  2. Rendszerkörnyezeti változó regisztrálása

    Létrehozhat egy rendszerkörnyezeti változót, és megadhatja az .jar osztályokat tartalmazó fájl elérési útját. Hozzon létre egy rendszerkörnyezeti változót .CLASSPATH

Külső kódtár használata

Az SQL Server 2019 (15.x) és újabb verzióiban külső kódtárakat használhat a Java nyelvhez Windowson és Linuxon. Az osztályokat lefordíthatja egy .jar fájlba, és feltöltheti a .jar fájlt és más függőségeket az adatbázisba a CREATE EXTERNAL LIBRARY DDL használatával.

Példa arra, hogyan tölthet fel egy .jar fájlt külső könyvtár használatával:

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

Külső kódtár létrehozásakor az SQL Server automatikusan hozzáfér a Java-osztályokhoz, és nem kell külön engedélyeket beállítania az osztályúton.

Az alábbi kód egy példa egy osztály metódusának meghívására egy csomagból, külső kódtárként feltöltve:

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

További információért lásd CREATE EXTERNAL LIBRARY.

Visszacsatolási kapcsolat az SQL Serverrel

Hurkolt kapcsolat használatával JDBC-n keresztül visszacsatlakozhat az SQL Serverhez, hogy adatokat olvasson vagy írjon a(z) sp_execute_external_script felől futtatott Java használatával. Ezt akkor használhatja, ha nem lehetséges a sp_execute_external_scriptInputDataSet és OutputDataSet argumentumának használata. Ha visszacsatolási kapcsolatot szeretne létesíteni a Windowsban, használja a következő példát:

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

A visszacsatolási kapcsolat Linuxon való létrehozásához a JDBC-illesztőnek három kapcsolati tulajdonságra van szüksége, amelyek a következő tanúsítványban vannak definiálva:

Ügyféltanúsítvány-hitelesítés