Dela via


Anropa Java-körningen i SQL Server Language Extensions

Gäller för: SQL Server 2019 (15.x) och senare versioner

Funktionen SQL Server Language Extensions använder den sp_execute_external_script system lagrade proceduren som gränssnitt för att anropa Java-körningen.

Den här instruktionsartikeln beskriver implementeringsinformation för Java-klasser och metoder som körs på SQL Server.

Var du kan placera Java-klasser

Det finns två metoder för att anropa Java-klasser i SQL Server:

  1. Placera .class eller .jar filer i java-klassökvägen.

  2. Ladda upp kompilerade klasser i en .jar fil och andra beroenden till databasen med hjälp av det externa bibliotekets DDL.

Anmärkning

Som en allmän rekommendation använder du .jar filer och inte enskilda .class filer. Detta är vanligt i Java och gör den övergripande upplevelsen enklare. Se även Skapa en Java-.jar-fil från klassfiler.

Använda klassökvägen

Grundprinciper

Följande är några grundläggande principer när du kör Java på SQL Server.

  • Kompilerade anpassade Java-klasser måste finnas i .class filer eller .jar filer i java-klassökvägen. PARAMETERN CLASSPATH innehåller sökvägen till de kompilerade Java-filerna.

  • Java-metoden som du anropar måste anges i parametern script i den lagrade proceduren.

  • Om klassen tillhör ett paket måste den packageName anges.

  • params används för att skicka parametrar till en Java-klass. Det går inte att anropa en metod som kräver argument. Därför är parametrar det enda sättet att skicka argumentvärden till din metod.

Anmärkning

I den här anteckningen upprepas åtgärder som stöds och inte stöds som är specifika för Java i SQL Server 2019 (15.x) och senare versioner. I den lagrade proceduren stöds indataparametrar, medan utdataparametrar inte stöds.

Anropa Java-klass

Den sp_execute_external_script system lagrade proceduren är gränssnittet som används för att anropa Java-körningen. I följande exempel visas ett sp_execute_external_script java-tillägg och parametrar för att ange sökväg, skript och anpassad kod.

Anmärkning

Du behöver inte definiera vilken metod som ska anropas. Som standard anropas en metod som heter execute . Det innebär att du måste följa Microsoft Extensibility SDK för Java för SQL Server och implementera en körningsmetod i Java-klassen.

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;

Ange CLASSPATH

När du kompilerar java-klassen eller -klasserna och skapat en .jar fil i Java classpathhar du två alternativ för att ange sökvägen till SQL Server Java-tillägget:

  1. Använda externa bibliotek

    Det enklaste alternativet är att göra så att SQL Server automatiskt hittar dina klasser genom att skapa externa bibliotek och peka biblioteket på en jar-fil. Använda externa bibliotek för Java

  2. Registrera en systemmiljövariabel

    Du kan skapa en systemmiljövariabel och ange sökvägarna till filen .jar som innehåller klasserna. Skapa en systemmiljövariabel med namnet CLASSPATH.

Använda externt bibliotek

I SQL Server 2019 (15.x) och senare versioner kan du använda externa bibliotek för Java-språket i Windows och Linux. Du kan kompilera dina klasser till en .jar fil och ladda upp .jar filen och andra beroenden till databasen med hjälp av DDL:et CREATE EXTERNAL LIBRARY (SKAPA EXTERNT BIBLIOTEK ).

Exempel på hur du laddar upp en .jar fil med ett externt bibliotek:

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

När det skapar ett externt bibliotek har SQL Server automatiskt åtkomst till Java-klasserna och du behöver inte ange några särskilda behörigheter till klassökvägen.

Följande kod är ett exempel på hur du anropar en metod i en klass från ett paket, uppladdat som ett externt bibliotek:

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

Mer information finns i SKAPA EXTERNT BIBLIOTEK.

Loopback-anslutning till SQL Server

Använd en loopback-anslutning för att ansluta tillbaka till SQL Server via JDBC för att läsa eller skriva data från Java som körs från sp_execute_external_script. Du kan använda detta när du använder argumenten InputDataSetsp_execute_external_script och OutputDataSet inte är möjliga. Använd följande exempel för att upprätta en loopback-anslutning i Windows:

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

För att göra en loopback-anslutning i Linux kräver JDBC-drivrutinen tre anslutningsegenskaper som definierats i följande certifikat:

Klientcertifikatautentisering