SQL Server Java Language Extension installeren in Linux

Van toepassing op: SQL Server 2019 (15.x) op Linux en latere versies

Meer informatie over het installeren van het Java Language Extension-onderdeel voor SQL Server in Linux. De Java-taalextensie maakt deel uit van SQL Server Language Extensions en een invoegtoepassing voor de database-engine.

Hoewel u de database-engine en taalextensies gelijktijdig kunt installeren, is het een aanbevolen procedure om eerst de SQL Server Database Engine te installeren en te configureren, zodat u eventuele problemen kunt oplossen voordat u meer onderdelen toevoegt.

Prerequisites

  • Het Java-extensiepakket bevindt zich in de SQL Server Linux source repositories. Als je al bronrepository's hebt geconfigureerd voor de Database Engine-installatie, voer dan de mssql-server-extensibility-java pakketinstallatiecommando's uit met dezelfde repo-registratie.
  • Taalextensies worden ook ondersteund in Linux-containers. Vooraf gebouwde containers met Language Extensions zijn niet beschikbaar, maar je kunt er een maken vanuit de SQL Server-containers door gebruik te maken van een voorbeeldtemplate op GitHub.

  • Taalextensies en Machine Learning Services worden standaard geïnstalleerd op SQL Server Big Data-clusters. Als u Big Data-clusters gebruikt, hoeft u de stappen in dit artikel niet te volgen.

Pakketlijst

Op een apparaat met internetverbinding download en installeer je pakketten onafhankelijk van de Database Engine door gebruik te maken van de pakketinstaller voor elk besturingssysteem. In de volgende tabel worden alle beschikbare pakketten beschreven.

Naam van het pakket Van toepassing op: Description
mssql-server-extensibility Alle talen Uitbreidbaarheidsframework dat wordt gebruikt voor de Java-taalextensie
mssql-server-extensibility-java Java Uitbreidbaarheidsframework dat wordt gebruikt voor de Java-taalextensie en bevat een ondersteunde Java-runtime

Van toepassing op: SQL Server 2019 (15.x) alleen op Linux

Java-taalextensie installeren

Om Language Extensions en Java op Linux te installeren, installeer je het mssql-server-extensibility-java pakket. Het pakket installeert automatisch JRE 11 (als het nog niet geïnstalleerd is) en voegt het JVM-pad toe aan een omgevingsvariabele genaamd JRE_HOME.

Als u de Java-taalextensie wilt inschakelen, maakt u een aangepast binair bestand door de instructies te volgen op de pagina Java Language Extension op GitHub.

Note

Op een server met internetverbinding worden pakketafhankelijkheden gedownload en geïnstalleerd als onderdeel van de installatie van het hoofdpakket. Als uw server niet is verbonden met internet, raadpleegt u meer informatie in de offline-installatie.

Je kunt elke Java-runtime downloaden en installeren, inclusief de nieuwste Microsoft Build van OpenJDK of een officieel gelicentieerde Java-runtime. Vanaf SQL Server 2022 (16.x) installeert SQL Server Setup geen Java-runtime.

Als u de Java-taalextensie wilt inschakelen, maakt u een aangepast binair bestand door de instructies te volgen op de pagina Java Language Extension op GitHub.

Red Hat-installatieopdracht

Om Language Extensions for Java op Red Hat te installeren, gebruik je het volgende commando.

Tip

Voer indien yum clean all mogelijk uit om pakketten op het systeem te vernieuwen vóór de installatie.

# Install as root or sudo
sudo yum install mssql-server-extensibility-java

Ubuntu-installatieopdracht

Om Language Extensions voor Java op Ubuntu te installeren, gebruik je het volgende commando.

Tip

Voer indien apt-get update mogelijk uit om pakketten op het systeem te vernieuwen vóór de installatie. Sommige Ubuntu Docker-images bevatten het apt-transport-https pakket niet. Voer apt-get install apt-transport-https uit om het te installeren.

# Install as root or sudo
sudo apt-get install mssql-server-extensibility-java

SUSE-installatieopdracht

Om Language Extensions for Java op SUSE te installeren, gebruik je het volgende commando.

# Install as root or sudo
sudo zypper install mssql-server-extensibility-java

Post-installatie configuratie (vereist)

  1. Machtigingen verlenen voor Linux

    U hoeft deze stap niet uit te voeren als u externe bibliotheken gebruikt. Externe bibliotheken zijn de aanbevolen aanpak. Voor hulp bij het maken van een externe bibliotheek uit je jar bestand, zie CREATE EXTERNAL LIBRARY.

    Als u geen externe bibliotheken gebruikt, moet u SQL Server machtigingen geven voor het uitvoeren van de Java-klassen in uw jar.

    Om lees- en uitvoeringstoegang te verlenen aan een jar bestand, voer je het volgende chmod commando uit op het jar bestand. Zet je cursusbestanden altijd in een jar functie wanneer je met SQL Server werkt. Zie jar voor hulp bij het maken van een bestand.

    chmod ug+rx <MyJarFile.jar>
    

    Je moet ook toestemming geven mssql_satellite om het bestand te lezen en uit te jar voeren.

    chown mssql_satellite:mssql_satellite <MyJarFile.jar>
    

    Aanvullende configuratie is voornamelijk via het hulpprogramma mssql-conf.

  2. Voeg het mssql gebruikersaccount toe dat wordt gebruikt om de SQL Server-service uit te voeren. Deze stap is nodig als je de setup nog niet eerder hebt uitgevoerd.

    sudo /opt/mssql/bin/mssql-conf setup
    
  3. Uitgaande netwerktoegang inschakelen. Uitgaande netwerktoegang is standaard uitgeschakeld. Om uitgaande verzoeken in te schakelen, stel je de outboundnetworkaccess Boolean-eigenschap in met de mssql-conf tool. Zie SQL Server configureren in Linux met mssql-conf voor meer informatie.

    # Run as SUDO or root
    # Enable outbound requests over the network
    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Start de SQL Server Launchpad-service en het Database Engine-exemplaar opnieuw op om de bijgewerkte waarden uit het INI-bestand te lezen. Een herstartbericht herinnert je telkens wanneer je een uitbreidbaarheids-gerelateerde instelling aanpast.

    systemctl restart mssql-launchpadd
    systemctl restart mssql-server.service
    
  5. Externe scriptuitvoering inschakelen. U kunt verbinding maken met een exemplaar van SQL Server met behulp van een vertrouwd SQL Server-clienthulpprogramma, zoals sqlcmd, SQL Server Management Studio (SSMS) of de MSSQL-extensie voor Visual Studio Code.

    EXECUTE sp_configure 'external scripts enabled', 1;
    
    RECONFIGURE WITH OVERRIDE;
    
  6. Start de mssql-launchpadd service opnieuw op.

  7. Registreer voor elke database waarin je taalextensies wilt gebruiken de externe taal met CREATE EXTERNAL LANGUAGE. Zie de volgende sectie voor stappen.

Externe taal registreren

Registreer voor elke database waarin je taalextensies wilt gebruiken de externe taal met CREATE EXTERNAL LANGUAGE.

In het volgende voorbeeld wordt een externe taal met de naam Java toegevoegd aan een database op SQL Server in Linux.

CREATE EXTERNAL LANGUAGE Java
FROM (
    CONTENT = N'/opt/mssql-extensibility/lib/java-lang-extension.tar.gz',
    FILE_NAME = 'javaextension.so',
    ENVIRONMENT_VARIABLES = N'{"JRE_HOME":"/opt/mssql/lib/zulu-jre-11"}'
);

Voor de Java-extensie bepaalt de omgevingsvariabele JRE_HOME het pad om de JVM te vinden en te initialiseren.

De CREATE EXTERNAL LANGUAGE DDL biedt een ENVIRONMENT_VARIABLES parameter om omgevingsvariabelen in te stellen voor het proces dat de extensie host. Gebruik deze parameter om omgevingsvariabelen in te stellen die externe taaluitbreidingen vereisen.

Zie CREATE EXTERNAL LANGUAGE voor meer informatie.

Installatie verifiëren

Java-feature-integratie bevat geen bibliotheken, maar je kunt wel uitvoeren grep -r JRE_HOME /etc om te bevestigen dat de JRE_HOME omgevingsvariabele bestaat.

Als u de installatie wilt valideren, voert u een T-SQL-script uit waarmee een door het systeem opgeslagen procedure wordt uitgevoerd die Java aanroept. U hebt een queryhulpprogramma nodig voor deze taak. U kunt verbinding maken met een exemplaar van SQL Server met behulp van een vertrouwd SQL Server-clienthulpprogramma, zoals sqlcmd, SQL Server Management Studio (SSMS) of de MSSQL-extensie voor Visual Studio Code.

Volledige installatie van SQL Server en Java Language Extension

Om de Database Engine en Java Language Extension in één procedure te installeren en te configureren, voeg je Java-pakketten en parameters toe aan een commando dat de Database Engine installeert.

  1. Geef een opdrachtregel op die de database-engine bevat, plus taaluitbreidingsfuncties.

    Het volgende commando voegt Java-uitbreidbaarheid toe aan een Database Engine-installatie.

    sudo yum install -y mssql-server mssql-server-extensibility-java
    
  2. Accepteer licentieovereenkomsten en voltooi de configuratie na de installatie. Gebruik het mssql-conf hulpmiddel.

    sudo /opt/mssql/bin/mssql-conf setup
    

    In deze stap wordt u gevraagd de gebruiksrechtovereenkomst voor de database-engine te accepteren, een editie te kiezen en het beheerderswachtwoord in te stellen.

  3. Herstart de dienst als je erom vraagt.

    sudo systemctl restart mssql-server.service
    

Installatie zonder toezicht

Gebruik de installatie zonder toezicht voor de database-engine en voeg de pakketten toe voor mssql-server-extensibility-java.

Offline-installatie

Om de pakketten te installeren, volg je de instructies voor offline installatie . Zoek je downloadsite en download vervolgens de specifieke pakketten die later in deze sectie worden vermeld.

Tip

Verschillende pakketbeheertools bieden commando's die je helpen pakketafhankelijkheden te bepalen. Voor yum, gebruik sudo yum deplist [package]. Voor Ubuntu gebruikt u sudo apt-get install --reinstall --download-only [package name] gevolgd door dpkg -I [package name].deb.

Site downloaden

Download de pakketten van https://packages.microsoft.com/. De site host alle Java-pakketten naast het Database Engine-pakket.

Paden downloaden

Pakket Distribution Downloadlocatie
mssql/extensibility-java packages Red Hat 8 https://packages.microsoft.com/rhel/8/mssql-server-2019/
mssql/extensibility-java packages SUSE v15 https://packages.microsoft.com/sles/15/mssql-server-2019/
mssql/extensibility-java packages Ubuntu 20.04 https://packages.microsoft.com/ubuntu/20.04/mssql-server-2019/pool/main/m/

Pakketlijst

Afhankelijk van de extensies die u wilt gebruiken, downloadt u de pakketten die nodig zijn voor een specifieke taal. Exacte bestandsnamen bevatten platforminformatie in het achtervoegsel, maar de volgende bestandsnamen helpen je bepalen welke bestanden je moet ophalen.

  • Kernpakketten

    • mssql-server-15.0.1000
    • mssql-server-extensibility-15.0.1000
  • Java

    • mssql-server-extensibility-java-15.0.1000

Limitations

Impliciete authenticatie is niet beschikbaar op Linux. Java-code die in het externe proces draait, kan niet terugverbinden met de server om toegang te krijgen tot data of andere bronnen.

Resourcebeheer

Linux en Windows hebben gelijkheid voor resource governance voor externe resource pools, maar de statistieken voor sys.dm_resource_governor_external_resource_pools hebben momenteel verschillende eenheden op Linux.

Note

De statistieken in de volgende tabel zijn afkomstig van de gespecificeerde controlegroepen (cgroepen) subsystemen.

Kolomnaam Description Waarde in Linux
peak_memory_kb Het maximale geheugen dat de resourcepool gebruikt. In Linux wordt deze statistiek afkomstig uit het memory subsysteem, waarbij de waarde is memory.max_usage_in_bytes
write_io_count Het totaal aantal schrijf-IO's dat is uitgegeven sinds de laatste reset van de Resource Governor-statistieken. In Linux is deze statistiek afkomstig uit het blkio subsysteem, waarbij de waarde op de schrijfrij is blkio.throttle.io_serviced
read_io_count Het totaal aantal geleesde IO's die sinds de laatste reset van de Resource Governor-statistieken is uitgegeven. Op Linux wordt deze statistiek afkomstig van het blkio subsysteem, waarbij de waarde op de leesrij is blkio.throttle.io_serviced
total_cpu_kernel_ms De cumulatieve CPU-gebruikerskerneltijd in milliseconden sinds de laatste reset van de Resource Governor-statistieken. In Linux is deze statistiek afkomstig uit het cpuacct subsysteem, waarbij de waarde in de gebruikersrij is cpuacct.stat
total_cpu_user_ms De cumulatieve CPU-gebruikerstijd in milliseconden sinds de laatste reset van de Resource Governor-statistieken. Op Linux wordt deze statistiek afkomstig van het cpuacct subsysteem, waarbij de waarde op de systeemrij is cpuacct.stat
active_processes_count Het aantal externe processen dat wordt uitgevoerd op het moment van de aanvraag. In Linux wordt deze statistiek afkomstig uit het pids subsysteem, waarbij de waarde is pids.current