Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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:
Placera
.classeller.jarfiler i java-klassökvägen.Ladda upp kompilerade klasser i en
.jarfil 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
.classfiler eller.jarfiler 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
scripti den lagrade proceduren.Om klassen tillhör ett paket måste den
packageNameanges.paramsanvä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:
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
Registrera en systemmiljövariabel
Du kan skapa en systemmiljövariabel och ange sökvägarna till filen
.jarsom innehåller klasserna. Skapa en systemmiljövariabel med namnetCLASSPATH.
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: