Megosztás a következőn keresztül:


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 .class vagy .jar fájlokat a Java-osztályúton.

  2. Töltsön fel lefordított osztályokat egy .jar fájlba és más függőségeket az adatbázisba a külső DDL-kódtár 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ályút fájljaiban .class vagy .jar fájljaiban 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.packageName

  • 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 meghatároznia, hogy melyik metódust kell meghívnia. 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;

A 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 megoldás, ha az SQL Server automatikusan megkeresi az osztályokat külső kódtárak létrehozásával és a tár jarra mutatásával. 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 egy külső tárral rendelkező fájl feltöltésére .jar :

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ó: KÜLSŐ KÓDTÁR LÉTREHOZÁSA.

Visszacsatolási kapcsolat az SQL Serverrel

Visszacsatolási kapcsolat használatával JDBC-n keresztül csatlakozhat vissza az SQL Serverhez, hogy adatokat olvasson vagy írjon a Java-ból sp_execute_external_script. Ezt akkor használhatja, ha a InputDataSet nem lehetséges argumentumokat és OutputDataSet argumentumokat sp_execute_external_script használja. 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