Installieren der Java-Spracherweiterung für SQL Server unter Linux

Gilt für: SQL Server 2019 (15.x) – Linux und höhere Versionen.

Erfahren Sie, wie Sie die Komponente Java-Spracherweiterung für SQL Server unter Linux installieren. Die Java-Spracherweiterung ist Teil der SQL Server-Spracherweiterungen und ein Add-On für die Datenbank-Engine.

Obwohl Sie die Datenbank-Engine und Spracherweiterungen gleichzeitig installieren können, empfiehlt es sich, zuerst die SQL Server-Datenbank-Engine zu installieren und zu konfigurieren, damit Sie eventuelle Probleme beheben können, bevor Sie weitere Komponenten hinzufügen.

Voraussetzungen

  • Erweiterungspakete für Java werden unter Linux in den Quellrepositorys für SQL Server gespeichert. Wenn Sie für die Datenbank-Engine-Installation bereits Quellrepositorys konfiguriert haben, können Sie die mssql-server-extensibility-java-Befehle für die Paketinstallation mithilfe derselben Repositoryregistrierung ausführen.

Paketliste

Auf einem mit dem Internet verbundenen Gerät werden Pakete unabhängig von der Datenbank-Engine mithilfe des Paketinstallationsprogramms für das betreffende Betriebssystem heruntergeladen und installiert. Die folgende Tabelle enthält alle verfügbaren Pakete.

Paketname Gilt für Beschreibung
mssql-server-extensibility Alle Sprachen Verwendetes Erweiterbarkeitsframework für die Java-Spracherweiterung
mssql-server-extensibility-java Java Gilt für: Nur SQL Server 2019 (15.x) unter Linux

Verwendetes Erweiterbarkeitsframework für die Java-Spracherweiterung, enthält außerdem eine unterstützte Java-Runtime

Installieren der Java-Spracherweiterung

Sie können Spracherweiterungen und Java unter Linux über mssql-server-extensibility-java installieren. Wenn Sie das Paket mssql-server-extensibility-java installieren, wird auch automatisch JRE 11 installiert, sofern nicht bereits geschehen. Außerdem wird der JVM-Pfad einer Umgebungsvariablen mit dem Namen JRE_HOME hinzugefügt.

Um die Java-Spracherweiterung zu aktivieren, erstellen Sie eine benutzerdefinierte Binärdatei, indem Sie den Anweisungen auf der Java-Spracherweiterungsseite auf GitHub folgen.

Hinweis

Auf einem mit dem Internet verbundenen Server werden Paketabhängigkeiten im Rahmen der Hauptpaketinstallation heruntergeladen und installiert. Wenn Ihr Server nicht mit dem Internet verbunden ist, finden Sie weitere Informationen unter Offlineeinrichtung.

Sie können jegliche Java-Runtime einschließlich des neuesten Microsoft Build of OpenJDK oder der offiziell lizenzierten Java-Runtime wie gewünscht herunterladen und installieren. Ab SQL Server 2022 (16.x) wird beim SQL-Setup keine Java-Runtime mehr installiert.

Um die Java-Spracherweiterung zu aktivieren, erstellen Sie eine benutzerdefinierte Binärdatei, indem Sie den Anweisungen auf der Java-Spracherweiterungsseite auf GitHub folgen.

Befehl zum Installieren von Red Hat

Mithilfe des folgenden Befehls können Sie Spracherweiterungen für Java unter Red Hat installieren.

Tipp

Führen Sie nach Möglichkeit yum clean all aus, um vor der Installation Pakete auf dem System zu aktualisieren.

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

Ubuntu-Installationsbefehl

Mithilfe des folgenden Befehls können Sie Spracherweiterungen für Java unter Ubuntu installieren.

Tipp

Führen Sie nach Möglichkeit apt-get update aus, um vor der Installation Pakete auf dem System zu aktualisieren. Außerdem verfügen einige Docker-Images von Ubuntu möglicherweise nicht über die HTTPS-Transportoption „apt“. Verwenden Sie apt-get install apt-transport-https, um diese zu installieren.

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

SUSE-Installationsbefehl

Mithilfe des folgenden Befehls können Sie Spracherweiterungen für Java unter SUSE installieren.

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

Konfigurieren nach der Installation (erforderlich)

  1. Erteilen Sie Berechtigungen unter Linux.

    Wenn Sie externe Bibliotheken verwenden, müssen Sie diesen Schritt nicht ausführen. Es wird empfohlen, externe Bibliotheken für die Arbeit zu verwenden. Informationen zum Erstellen einer externen Bibliothek aus der jar-Datei finden Sie unter CREATE EXTERNAL LIBRARY.

    Wenn Sie keine externen Bibliotheken verwenden, müssen Sie SQL Server Berechtigungen zum Ausführen der Java-Klassen in Ihrer jar-Datei erteilen.

    Sie können einer jar-Datei Lese-und Ausführungszugriff gewähren, indem Sie den folgenden chmod-Befehl auf diese ausführen. Wenn Sie mit SQL Server arbeiten, empfiehlt es sich, die Klassendateien immer in eine jar-Datei zu speichern. Hilfe zum Erstellen einer jar finden Sie unter Erstellen einer Java-Jar-Datei aus Klassendateien.

    chmod ug+rx <MyJarFile.jar>
    

    Außerdem müssen Sie mssql_satellite Berechtigungen erteilen, um die jar-Datei zu lesen oder auszuführen.

    chown mssql_satellite:mssql_satellite <MyJarFile.jar>
    

    Die zusätzliche Konfiguration erfolgt in erster Linie über das Tool mssql-conf.

  2. Fügen Sie das mssql-Benutzerkonto hinzu, um den SQL Server-Dienst auszuführen. Dies ist erforderlich, wenn Sie das Setup vorher noch nicht ausgeführt haben.

    sudo /opt/mssql/bin/mssql-conf setup
    
  3. Aktivieren Sie den Zugriff auf ausgehenden Netzwerkdatenverkehr. Der Zugriff auf ausgehenden Netzwerkdatenverkehr ist standardmäßig deaktiviert. Sie können mit mssql-conf die boolesche outboundnetworkaccess-Eigenschaft festlegen, um ausgehende Anforderungen zu aktivieren. Weitere Informationen finden Sie unter Konfigurieren von SQL Server für Linux mithilfe von mssql-conf.

    # Run as SUDO or root
    # Enable outbound requests over the network
    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Starten Sie anschließend das SQL Server-Launchpad und die Datenbank-Engine-Instanz neu, um die aktualisierten Werte aus der INI-Datei zu lesen. Wenn eine Erweiterbarkeitseinstellung geändert wird, werden Sie in einer Neustartmeldung darauf hingewiesen.

    systemctl restart mssql-launchpadd
    systemctl restart mssql-server.service
    
  5. Aktivieren Sie die externe Skriptausführung mithilfe von Azure Data Studio oder einem anderen Tool wie SQL Server Management Studio (nur unter Windows), das Transact-SQL ausführt.

    EXEC sp_configure 'external scripts enabled', 1;
    RECONFIGURE WITH OVERRIDE;
    
  6. Starten Sie den Dienst mssql-launchpadd neu.

  7. Für jede Datenbank, in der Sie Spracherweiterungen verwenden möchten, müssen Sie die externe Sprache über den Befehl CREATE EXTERNAL LANGUAGE registrieren. Siehe die Schritte im nächsten Abschnitt.

Registrieren einer externen Sprache

Für jede Datenbank, in der Sie Spracherweiterungen verwenden möchten, müssen Sie die externe Sprache über den Befehl CREATE EXTERNAL LANGUAGE registrieren.

Im folgenden Beispiel wird die externe Sprache mit dem Namen Java zu einer Datenbank unter SQL Server für Linux hinzugefügt.

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"}');

Für die Java-Erweiterung wird die Umgebungsvariable JRE_HOME verwendet, um den Pfad festzulegen, über den JVM gefunden und initialisiert werden kann.

Die CREATE EXTERNAL LANGUAGE-DDL stellt einen Parameter bereit (ENVIRONMENT_VARIABLES), mit dem Umgebungsvariablen speziell für den Prozess festgelegt werden können, der die Erweiterung hostet. Dies ist die empfohlene und effektivste Methode für das Festlegen von Umgebungsvariablen, die für externe Spracherweiterungen erforderlich sind.

Weitere Informationen finden Sie unter CREATE EXTERNAL LANGUAGE.

Überprüfen der Installation

Die Integration von Java-Funktionen umfasst keine Bibliotheken, aber Sie können grep -r JRE_HOME /etc ausführen, um die Erstellung der Umgebungsvariablen JAVA_HOME zu bestätigen.

Sie können die Installation überprüfen, indem Sie ein T-SQL-Skript ausführen, das eine gespeicherte Systemprozedur ausführt, die Java aufruft. Für diese Aufgabe benötigen Sie ein Abfragetool. Azure Data Studio ist eine gute Wahl. Andere häufig verwendete Tools wie SQL Server Management Studio oder PowerShell können nur unter Windows verwendet werden. Wenn Sie über einen Windows-Computer mit diesen Tools verfügen, verwenden Sie diesen, um eine Verbindung mit Ihrer Linux-Installation der Datenbank-Engine herzustellen.

Vollständige Installation von SQL Server und der Java-Spracherweiterung

Sie können die Datenbank-Engine und die Java-Spracherweiterung zusammen installieren und konfigurieren, indem Sie Java-Pakete und -Parameter an einen Befehl anfügen, der wiederum die Datenbank-Engine installiert.

  1. Geben Sie eine Befehlszeile an, die die Datenbank-Engine sowie Spracherweiterungsfeatures enthält.

    Sie können Java-Erweiterbarkeit zur Installation einer Datenbank-Engine hinzufügen.

    sudo yum install -y mssql-server mssql-server-extensibility-java
    
  2. Akzeptieren Sie die Lizenzbedingungen, und schließen Sie die Konfiguration im Anschluss an die Installation ab. Verwenden Sie hierfür das Tool mssql-conf.

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

    In diesem Schritt werden Sie aufgefordert, die Lizenzvereinbarung für die Datenbank-Engine zu akzeptieren, eine Edition auszuwählen und das Administratorkennwort festzulegen.

  3. Starten Sie den Dienst neu, wenn Sie dazu aufgefordert werden.

    sudo systemctl restart mssql-server.service
    

Unbeaufsichtigte Installation

Fügen Sie die Pakete für mssql-server-extensibility-java der Datenbank-Engine über eine unbeaufsichtigte Installation hinzu.

Offlineinstallation

Befolgen Sie die Anweisungen zur Offlineinstallation, um die Pakete zu installieren. Der nachfolgenden Liste können Sie entnehmen, auf welchen Websites Sie jeweils entsprechende Downloads finden. Laden Sie dann alle nötigen Pakete herunter.

Tipp

Einige der Paketverwaltungstools umfassen Befehle, mit denen Sie Paketabhängigkeiten ermitteln können. Verwenden Sie für yum sudo yum deplist [package]. Verwenden Sie für Ubuntu erst sudo apt-get install --reinstall --download-only [package name] und dann dpkg -I [package name].deb.

Downloadsite

Sie können die Pakete von https://packages.microsoft.com/ herunterladen. Alle Pakete für Java werden zusammen mit dem Datenbank-Engine-Paket bereitgestellt.

Downloadpfade

Paket Verteilung Downloadspeicherort
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/

Paketliste

Je nachdem, welche Erweiterungen Sie verwenden möchten, müssen Sie die für die jeweilige Sprache erforderlichen Pakete herunterladen. Genaue Dateinamen enthalten Plattforminformationen im Suffix, aber die folgenden Dateinamen sollten genau genug sein, damit Sie herausfinden können, welche Dateien Sie benötigen.

  • Erforderliche Pakete

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

    • mssql-server-extensibility-java-15.0.1000

Begrenzungen

Die implizite Authentifizierung ist zurzeit nicht unter Linux verfügbar. Das bedeutet, dass Sie über Java-Code, der zu diesem Zeitpunkt ausgeführt wird, keine erneute Verbindung mit dem Server herstellen können, um auf Daten oder andere Ressourcen zuzugreifen.

Ressourcengovernance

In Bezug auf die Ressourcengovernance besteht zwar zwischen Linux und Windows Parität für externe Ressourcenpools, aber die Statistiken für sys.dm_resource_governor_external_resource_pools haben derzeit unterschiedliche Einheiten unter Linux.

Hinweis

Statistiken in der folgenden Tabelle stammen aus den angegebenen Subsystemen der Steuerelementgruppen (cgroups).

Spaltenname BESCHREIBUNG Wert unter Linux
peak_memory_kb Der maximale Speicher, der für den Ressourcenpool verwendet wird. Unter Linux wird diese Statistik dem memory-Subsystem entnommen. Dabei lautet der Wert memory.max_usage_in_bytes.
write_io_count Die Gesamtanzahl der E/A-Schreibvorgänge, die seit dem Zurücksetzen der Resource Governor-Statistiken ausgegeben wurden. Unter Linux wird diese Statistik dem blkio-Subsystem entnommen. Dabei lautet der Wert in der Zeile für Schreibvorgänge blkio.throttle.io_serviced.
read_io_count Die Gesamtanzahl der E/A-Lesevorgänge, die seit dem Zurücksetzen der Resource Governor-Statistiken ausgegeben wurden. Unter Linux wird diese Statistik dem blkio-Subsystem entnommen. Dabei lautet der Wert in der Zeile für Lesevorgänge blkio.throttle.io_serviced.
total_cpu_kernel_ms Die kumulierte CPU-Benutzerkernelzeit in Millisekunden, seitdem die Resource Governor-Statistiken zurückgesetzt wurden. Unter Linux wird diese Statistik dem cpuacct-Subsystem entnommen. Dabei lautet der Benutzerzeilenwert cpuacct.stat.
total_cpu_user_ms Die kumulierte CPU-Benutzerzeit in Millisekunden, seitdem die Resource Governor-Statistiken zurückgesetzt wurden. Unter Linux wird diese Statistik dem cpuacct-Subsystem entnommen. Dabei lautet der Systemzeilenwert cpuacct.stat.
active_processes_count Die Anzahl externer Prozesse, die zum Zeitpunkt der Anforderung ausgeführt werden. Unter Linux wird diese Statistik dem pids-Subsystem entnommen. Dabei lautet der Wert pids.current.