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
Die Linux-Version muss von SQL Server unterstützt werden, muss aber nicht die Docker-Engine enthalten. Folgende Versionen werden unterstützt:
Sie sollten über ein Tool zum Ausführen von T-SQL-Befehlen (Transact-SQL) verfügen. Sie benötigen einen Abfrage-Editor für die Konfiguration und Validierung nach der Installation. Die Verwendung von Azure Data Studio wird empfohlen. Dabei handelt es sich um einen kostenlosen Download, der unter Linux ausgeführt wird.
- 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.
Spracherweiterungen werden auch in Linux-Containern unterstützt. Wir stellen keine vorgefertigten Container mit Spracherweiterungen bereit. Sie können jedoch mithilfe einer in GitHub verfügbaren Vorlage einen Container aus den SQL Server-Containern erstellen.
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. Weitere Informationen finden Sie unter Ausführen von Python- und R-Skripts mit Machine Learning Services auf Big Data-Clustern von SQL Server 2019.
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)
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 einejar
-Datei zu speichern. Hilfe zum Erstellen einerjar
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 diejar
-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.
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
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
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
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;
Starten Sie den Dienst
mssql-launchpadd
neu.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.
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
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.
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 | Distribution | 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 . |