Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              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: