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

Gilt für: SQL Server 2019 (15.x) unter Linux und höheren 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

  • Das Java-Erweiterungspaket befindet sich in den SQL Server Linux-Quellcode-Repositories. Wenn Sie bereits Quellcode-Repositories für die Installation der Datenbank-Engine konfiguriert haben, führen Sie die mssql-server-extensibility-java Paketinstallationsbefehle mit derselben Repo-Registrierung aus.
  • Spracherweiterungen werden auch in Linux-Containern unterstützt. Vorgefertigte Container mit Spracherweiterungen sind nicht verfügbar, aber du kannst einen aus den SQL Server-Containern erstellen, indem du eine Beispielvorlage auf GitHub verwendest.

  • Spracherweiterungen und Machine Learning Services werden standardmäßig auf Big Data-Clustern für SQL Server installiert. Wenn Sie Big Data-Cluster verwenden, müssen Sie die Schritte in diesem Artikel nicht ausführen.

Paketliste

Auf einem internetverbundenen Gerät lädst und installierst du Pakete unabhängig von der Datenbank-Engine, indem du den Paket-Installer für jedes Betriebssystem nutzt. Die folgende Tabelle enthält alle verfügbaren Pakete.

Paketname Gilt für: Description
mssql-server-extensibility Alle Sprachen Verwendetes Erweiterbarkeitsframework für die Java-Spracherweiterung
mssql-server-extensibility-java Java Verwendetes Erweiterbarkeitsframework für die Java-Spracherweiterung, enthält außerdem eine unterstützte Java-Runtime

Gilt für: SQL Server 2019 (15.x) nur unter Linux

Installieren der Java-Spracherweiterung

Um Language Extensions und Java unter Linux zu installieren, installieren Sie das mssql-server-extensibility-java Paket. Das Paket installiert automatisch JRE 11 (falls es noch nicht installiert ist) und fügt den JVM-Pfad einer Umgebungsvariable namens JRE_HOME.

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

Note

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 jede Java-Laufzeit herunterladen und installieren, einschließlich der neuesten Microsoft-Build von OpenJDK oder einer offiziell lizenzierten Java-Laufzeit. 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

Um Language Extensions for Java auf Red Hat zu installieren, verwenden Sie den folgenden Befehl.

Tip

Falls möglich, führen Sie yum clean all aus, um die Pakete auf dem System vor der Installation zu aktualisieren.

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

Ubuntu-Installationsbefehl

Um Language Extensions for Java auf Ubuntu zu installieren, verwenden Sie den folgenden Befehl.

Tip

Falls möglich, führen Sie apt-get update aus, um die Pakete auf dem System vor der Installation zu aktualisieren. Einige Ubuntu-Docker-Images enthalten das Paket apt-transport-https nicht. Für die Installation führen Sie apt-get install apt-transport-https aus.

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

SUSE-Installationsbefehl

Um Language Extensions for Java auf SUSE zu installieren, verwenden Sie folgenden Befehl.

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

Nachinstallationskonfiguration (erforderlich)

  1. Erteilen Sie Berechtigungen unter Linux.

    Wenn Sie externe Bibliotheken verwenden, müssen Sie diesen Schritt nicht ausführen. Externe Bibliotheken sind der empfohlene Ansatz. Für Hilfe beim Erstellen einer externen Bibliothek aus deiner jar Datei siehe 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.

    Um eine jar Datei zum Lesen und Ausführen zu gewähren, führen Sie den folgenden chmod Befehl auf der jar Datei aus. Speichern Sie Ihre Kursdateien immer, jar wenn Sie mit SQL Server arbeiten. Hilfe zum Erstellen von jarfinden Sie unter Erstellen einer Java-JAR-Datei aus Klassendateien.

    chmod ug+rx <MyJarFile.jar>
    

    Du musst außerdem Berechtigungen geben mssql_satellite , um die jar Datei zu lesen und 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. Dieser Schritt ist erforderlich, wenn du das Setup vorher nicht ausgeführt hast.

    sudo /opt/mssql/bin/mssql-conf setup
    
  3. Aktivieren Sie den Zugriff auf ausgehenden Netzwerkdatenverkehr. Der Zugriff auf ausgehenden Netzwerkdatenverkehr ist standardmäßig deaktiviert. Um ausgehende Anfragen zu aktivieren, setzen Sie mit dem mssql-conf Tool die outboundnetworkaccess boolesche Eigenschaft ein. 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. Eine Neustart-Nachricht erinnert Sie jedes Mal, wenn Sie eine erweiterbarkeitsbezogene Einstellung ändern.

    systemctl restart mssql-launchpadd
    systemctl restart mssql-server.service
    
  5. Aktivieren sie die Ausführung externer Skripts. Sie können eine Verbindung mit einer Sql Server-Instanz herstellen, indem Sie ein vertrautes SQL Server-Clienttool verwenden, z. B. sqlcmd, SQL Server Management Studio (SSMS) oder die MSSQL-Erweiterung für Visual Studio Code.

    EXECUTE 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, registrieren Sie die externe Sprache mit CREATE EXTERNAL LANGUAGE. Siehe den nächsten Abschnitt für Schritte.

Registrieren einer externen Sprache

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

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 bestimmt die Umgebungsvariable JRE_HOME den Pfad, um das JVM zu finden und zu initialisieren.

Die CREATE EXTERNAL LANGUAGE DDL stellt einen ENVIRONMENT_VARIABLES Parameter bereit, um die Umgebungsvariablen für den Prozess festzulegen, der die Erweiterung hostet. Verwenden Sie diesen Parameter, um Umweltvariablen festzulegen, die externe Spracherweiterungen erfordern.

Weitere Informationen finden Sie unter CREATE EXTERNAL LANGUAGE.

Überprüfen der Installation

Die Integration von Java-Funktionen beinhaltet keine Bibliotheken, aber du kannst ausführengrep -r JRE_HOME /etc, um zu bestätigen, dass die JRE_HOME Umgebungsvariable existiert.

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. Sie können eine Verbindung mit einer Sql Server-Instanz herstellen, indem Sie ein vertrautes SQL Server-Clienttool verwenden, z. B. sqlcmd, SQL Server Management Studio (SSMS) oder die MSSQL-Erweiterung für Visual Studio Code.

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

Um die Datenbank-Engine und die Java Language Extension in einem Verfahren zu installieren und zu konfigurieren, fügen Sie Java-Pakete und Parameter an einen Befehl an, der die Datenbank-Engine installiert.

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

    Der folgende Befehl fügt einer Datenbank-Engine-Installation Java-Erweiterbarkeit hinzu.

    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. Benutze das mssql-conf Werkzeug.

    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. Neustarte den Dienst, wenn du dazu aufgefordert wirst.

    sudo systemctl restart mssql-server.service
    

Unbeaufsichtigte Installation

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

Offlineinstallation

Um die Pakete zu installieren, folgen Sie den Anweisungen zur Offline-Installation . Finden Sie Ihre Download-Seite und laden Sie dann die spezifischen Pakete später in diesem Abschnitt herunter.

Tip

Mehrere Paketverwaltungstools bieten Befehle, die Ihnen helfen, Paketabhängigkeiten zu bestimmen. Verwenden Sie yum für 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.

Download-Seite

Laden Sie die Pakete von https://packages.microsoft.com/. herunter. Die Seite hostet alle Java-Pakete zusammen mit dem Datenbank-Engine-Paket.

Downloadpfade

Paket Verteilung Speicherort für Downloads
mssql/extensibility-java packages Roter Hut 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 die Plattforminformationen im Suffix, aber die folgenden Dateinamen helfen dir zu bestimmen, welche Dateien du holen solltest.

  • Erforderliche Pakete

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

    • mssql-server-extensibility-java-15.0.1000

Einschränkungen

Implizite Authentifizierung ist unter Linux nicht verfügbar. Java-Code, der im externen Prozess läuft, kann keine Verbindung zum Server herstellen, um auf Daten oder andere Ressourcen zuzugreifen.

Ressourcenverwaltung

Linux und Windows haben Parität bei der Ressourcenverwaltung für externe Ressourcenpools, aber die Statistiken für sys.dm_resource_governor_external_resource_pools haben derzeit unterschiedliche Einheiten auf Linux.

Note

Die Statistiken in der folgenden Tabelle stammen aus den angegebenen Kontrollgruppen-(cgroups)-Subsystemen.

Spaltenname Description Wert unter Linux
peak_memory_kb Der maximale Speicher, den der Ressourcenpool nutzt. Unter Linux wird diese Statistik dem memory-Subsystem entnommen. Dabei lautet der Wert memory.max_usage_in_bytes.
write_io_count Die Gesamtzahl der Write IOs, die seit dem letzten Reset der Resource Governor-Statistiken ausgegeben wurden. Unter Linux wird diese Statistik dem blkio-Subsystem entnommen, wobei der Wert in der Schreibzeile blkio.throttle.io_serviced lautet.
read_io_count Die Gesamtzahl der Read-IOs, die seit dem letzten Reset der Resource Governor-Statistiken ausgegeben wurden. Unter Linux stammt diese Statistik aus dem Subsystem blkio , wobei der Wert auf der Lesezeile lautet blkio.throttle.io_serviced
total_cpu_kernel_ms Die kumulierte CPU-Benutzerkernelzeit in Millisekunden seit dem letzten Reset der Resource Governor-Statistiken. 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 seit dem letzten Reset der Resource Governor-Statistiken. Unter Linux stammt diese Statistik aus dem Subsystem cpuacct , wobei der Wert in der Systemzeile ist 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.