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

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

Erfahren Sie, wie Sie die Komponente Java-Spracherweiterung für SQL Server unter Windows installieren. Die Java-Spracherweiterung gehört zu den SQL Server-Spracherweiterungen.

Hinweis

In diesem Artikel wird die Installation der Java-Spracherweiterung für SQL Server unter Windows vorgestellt. Informationen für Linux finden Sie unter Installieren von Java-Spracherweiterungen für SQL Server unter Linux. Informationen zur C#-Spracherweiterung unter Windows finden Sie unter Installieren der .NET-Spracherweiterung für SQL Server unter Windows.

Voraussetzungen

Hinweis

Featurefunktionen und Installationsoptionen können je nach SQL Server-Version variieren. Wählen Sie in der Dropdownliste zur Versionsauswahl die entsprechende SQL Server-Version aus.

  • Die Java-Spracherweiterung muss über das SQL Server-Setup installiert werden.

  • 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. In SQL Server 2022 (16.x) und höheren Versionen wird die Java-Runtime nicht vom SQL Server-Setup installiert.

  • Es ist eine Datenbank-Engine-Instanz erforderlich. Sie können nicht ausschließlich die Features der Java-Spracherweiterung installieren, diese aber einer vorhandenen Instanz schrittweise hinzufügen.

  • Für die Aufrechterhaltung der Geschäftskontinuität werden Always On-Verfügbarkeitsgruppen für Spracherweiterungen unterstützt. Sie müssen auf jedem Knoten Spracherweiterungen installieren und Pakete konfigurieren. In SQL Server wird die Installation der Java-Spracherweiterung auch in einer Failoverclusterinstanz unterstützt.

  • Installieren Sie SQL Server-Spracherweiterungen oder die Java-Spracherweiterung nicht auf einem Domänencontroller. Ansonsten schlägt derjenige Teil des Setups, der die Spracherweiterungen betrifft, fehl.

  • 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.

Wichtig

Stellen Sie nach Abschluss des Setups sicher, dass Sie die in diesem Artikel beschriebenen Schritte nach der Konfiguration durchführen. Zu diesen Schritten gehören das Aktivieren von SQL Server für die Verwendung von externem Code und das Hinzufügen von Konten, die SQL Server für das Ausführen Ihres Java-Codes benötigt. Konfigurationsänderungen erfordern in der Regel einen Neustart der Instanz oder einen Neustart des Launchpad-Diensts.

Java JRE oder JDK

Hinweis

Featurefunktionen und Installationsoptionen können je nach SQL Server-Version variieren. Wählen Sie in der Dropdownliste zur Versionsauswahl die entsprechende SQL Server-Version aus.

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

Java 11 ist die derzeit unterstützte Version unter Windows. Die Java Runtime Environment (JRE) ist die Mindestanforderung, aber das Java Development Kit (JDK) ist nützlich, wenn Sie den Java-Compiler und die Entwicklungspakete benötigen. Da das JDK alles beinhaltet, ist die JRE bei der Installation des JDK nicht erforderlich. Unter Windows empfiehlt es sich, das JDK nach Möglichkeit unter dem Standardordner /Program Files/ zu installieren. Andernfalls ist eine zusätzliche Konfiguration erforderlich, um ausführbare Dateien Berechtigungen zu erteilen. Weitere Informationen finden Sie im Abschnitt über das Erteilen von Berechtigungen (Windows) in diesem Dokument.

Es gibt zwei Möglichkeiten, Java zu installieren und mit SQL Server. 2019 (15.x) oder höher zu nutzen:

  1. Verwenden Sie die standardmäßige Java-Runtime, die in der SQL Server-Installation enthalten ist.

    In der folgenden Tabelle sind die Standardversionen von Java aufgeführt, die im Setup enthalten sind:

    SQL Server-Version Standardversion von Java
    SQL Server 2019 (15.x) CU 23 oder höher Microsoft-Build von OpenJDK 11.0.19
    SQL Server 2019 (15.x) RTM - CU22 Azul Zulu JRE 11.0.3
  2. Verwenden Sie Ihre bevorzugte Java-Verteilung anstelle der Java-Standardruntime.

    Java 11 ist die derzeit unterstützte Version unter Windows. Die Java Runtime Environment (JRE) ist die Mindestanforderung, aber das Java Development Kit (JDK) ist nützlich, wenn Sie den Java-Compiler und die Entwicklungspakete benötigen. Da das JDK alles beinhaltet, ist die JRE bei der Installation des JDK nicht erforderlich. Unter Windows empfiehlt es sich, das JDK nach Möglichkeit unter dem Standardordner /Program Files/ zu installieren. Andernfalls ist eine zusätzliche Konfiguration erforderlich, um ausführbare Dateien Berechtigungen zu erteilen. Weitere Informationen finden Sie im Abschnitt über das Erteilen von Berechtigungen (Windows) in diesem Dokument.

Hinweis

Da Java abwärtskompatibel ist, funktionieren frühere Versionen möglicherweise, die für SQL Server 2019 (15.x) unterstützte und getestete Version ist jedoch Java 11.

Abrufen der Installationsmedien

Der Downloadspeicherort für SQL Server ist abhängig von der Edition.

  • SQL Server-Editionen Enterprise, Standard und Express. Diese Editionen sind für die Verwendung in der Produktion lizenziert. Wenden Sie sich für die Installation von Medien für die Editionen Enterprise und Standard an Ihren Softwareanbieter. Einkaufsinformationen und ein Verzeichnis mit Microsoft-Partner finden Sie auf der Einkaufswebsite von Microsoft.

  • Aktuellste kostenlose Edition

Ausführen von 'Setup'

Bei lokalen Installationen müssen Sie das Setup als Administrator ausführen. Wenn Sie SQL Server von einer Remotefreigabe installieren, müssen Sie ein Domänenkonto verwenden, das Lese- und Ausführungsberechtigungen auf der Remotefreigabe hat.

  1. Starten Sie den Setup-Assistenten für SQL Server.

  2. Klicken Sie auf der Registerkarte Installation auf Neue eigenständige SQL Server-Installation oder Hinzufügen von Funktionen zu einer vorhandenen Installation.

  1. Wählen Sie diese Optionen auf der Seite Funktionsauswahl aus:

    Datenbank-Engine-Dienste: Sie müssen eine Instanz der Datenbank-Engine installieren, um Spracherweiterungen mit SQL Server verwenden zu können. Sie können entweder eine Standardinstanz oder eine benannte Instanz verwenden.

    Machine Learning Services und Spracherweiterungen: Mit dieser Option wird die Spracherweiterungskomponente installiert, die die Java-Codeausführung unterstützt.

    • Wenn Sie die Java-Standardruntime installieren möchten, wählen Sie Machine Learning-Dienste und -Spracherweiterungen sowie Java aus.

    • Wenn Sie Ihre eigene Java-Runtime verwenden möchten, wählen Sie Machine Learning-Dienste und -Spracherweiterungen aus. Wählen Sie nicht Java aus.

    • Wenn Sie R und Python verwenden möchten, finden Sie Informationen unter Installieren von SQL Server Machine Learning Services (Python und R) unter Windows.

    Screenshot: Featureoptionen für Spracherweiterungen.

    1. Wenn Sie im vorherigen Schritt Java ausgewählt haben, um die Java-Standardruntime zu installieren, wird die Seite Java-Installationsspeicherort angezeigt.

      Installieren Sie den in dieser Installation enthaltenen Standard-Java. Die Option Speicherort einer anderen Version angeben, die auf diesem Computer installiert ist wird für Spracherweiterungen nicht verwendet.

      Screenshot: Java-Installationsspeicherort.

  1. Wählen Sie diese Optionen auf der Seite Funktionsauswahl aus:

    Datenbank-Engine-Dienste: Sie müssen eine Instanz der Datenbank-Engine installieren, um Spracherweiterungen mit SQL Server verwenden zu können. Sie können entweder eine Standardinstanz oder eine benannte Instanz verwenden.

    Machine Learning Services und Spracherweiterungen: Mit dieser Option wird die Spracherweiterungskomponente installiert, die die Java-Codeausführung unterstützt.

    Screenshot. Instanzfeatures.

  1. Stellen Sie auf der Seite Installationsbereit sicher, dass die folgenden Auswahlmöglichkeiten aktiviert sind, und klicken Sie auf Installieren.

    • -Datenbank-Engine-Dienste
    • Machine Learning-Dienste und -Spracherweiterungen

    Notieren Sie sich den Speicherort des Ordners unter dem Pfad ..\Setup Bootstrap\Log, in dem die Konfigurationsdateien gespeichert werden. Nach Abschluss des Setups können Sie die installierten Komponenten in der Zusammenfassungsdatei überprüfen.

  2. Wenn Sie nach Abschluss des Setups dazu aufgefordert werden, starten Sie jetzt den Computer neu. Achten Sie unbedingt darauf, nach dem Abschluss des Setup-Vorgangs die vom Installations-Assistenten angezeigte Meldung zu lesen. Weitere Informationen finden Sie unter View and Read SQL Server Setup Log Files.

Hinzufügen der Variablen JRE_HOME

JRE_HOME ist eine Systemumgebungsvariable, die den Speicherort des Java-Interpreters angibt. In diesem Schritt erstellen Sie hierfür in Windows eine Systemumgebungsvariable.

  1. Suchen und kopieren Sie den JRE-Basispfad.

    Für die standardmäßige Java-Runtime Zulu JRE 11.0.3 lautet der JRE-Basispfad beispielsweise %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\AZUL-OpenJDK-JRE\.

    Abhängig von Ihrem SQL Server-Installationspfad oder wenn Sie eine andere Java-Laufzeitumgebung gewählt haben, kann sich der Speicherort des JDK oder der JRE von dem Pfad im vorherigen Beispiel unterscheiden. Selbst wenn Sie ein JDK installiert haben, wird häufig im Rahmen dieser Installation ein JRE-Unterordner erstellt. Verweisen Sie in einem solchen Fall auf den JRE-Ordner. Die Java-Erweiterung versucht, die jvm.dll aus dem Pfad %JRE_HOME%\bin\server zu laden.

  1. Suchen und kopieren Sie den JRE-Basispfad.

    Dieser Pfad hängt von der Runtime und den Installationsoptionen ab.

    Die Java-Erweiterung versucht, die jvm.dll aus dem Pfad %JRE_HOME%\bin\server zu laden.

  1. Öffnen Sie in der Systemsteuerung System und Sicherheit und anschließend System, und wählen Sie dann Erweiterte Systemeigenschaften aus.

  2. Legen Sie Umgebungsvariablen fest.

  3. Erstellen Sie eine neue Systemvariable für JRE_HOME mit dem Wert des JDK-/JRE-Pfads (aus Schritt 1).

  1. Starten Sie Launchpad neu.

    1. Öffnen Sie den SQL Server-Konfigurations-Manager.

    2. Klicken Sie unter „SQL Server-Dienste“ mit der rechten Maustaste auf „SQL Server-Launchpad“, und wählen Sie Neu starten aus.

  1. Registrieren Sie die Spracherweiterung. Führen Sie die folgenden Schritte aus, um die Java-Spracherweiterung herunterzuladen und zu registrieren, die für die benutzerdefinierte Java-Runtime verwendet wird.

    1. Laden Sie die Datei java-lang-extension-windows-release.zip aus der Java-Spracherweiterung für das GitHub-Repository von SQL Server herunter. Laden Sie die neueste Windows-java-lang-extension-windows.zip-Datei herunter. Wenn Sie Standard-Java von SQL Server Setup nicht installiert haben, stellen Sie sicher, dass die JRE-Version mit der von GitHub heruntergeladenen Version übereinstimmt. Wenn Sie ihre eigene installierte JRE-Version verwenden möchten, müssen Sie möglicherweise java-lang-extension aus GitHub-Quellcode kompilieren.

    2. Verwenden Sie Azure Data Studio, um eine Verbindung mit Ihrer SQL Server-Instanz herzustellen, und führen Sie den folgenden T-SQL-Befehl aus, um die Java-Spracherweiterung mit CREATE EXTERNAL LANGUAGE zu registrieren.

    3. Ändern Sie den Pfad in dieser Anweisung, um den Speicherort der heruntergeladenen ZIP-Spracherweiterungsdatei (java-lang-extension-windows-release.zip) und den Speicherort Ihrer benutzerdefinierten Java-Installation (%ProgramFiles%\Python) anzugeben.

    CREATE EXTERNAL LANGUAGE [Java]
    FROM (CONTENT = N'C:\path\to\java-lang-extension-windows-release.zip',
        FILE_NAME = 'javaextension.dll',
        ENVIRONMENT_VARIABLES = N'{"JAVAHOME": "C:\\Program Files\\Java"}');
    GO
    
  2. Starten Sie Launchpad neu.

    1. Öffnen Sie den SQL Server-Konfigurations-Manager.

    2. Klicken Sie unter „SQL Server-Dienste“ mit der rechten Maustaste auf „SQL Server-Launchpad“, und wählen Sie Neu starten aus.

Gewähren des Zugriffs auf einen nicht standardmäßigen JRE-Ordner

Wenn Sie nicht Standard-Java installiert haben, das in SQL Server enthalten ist, und Java nicht unter /Program Files installiert haben, müssen Sie die folgenden Schritte ausführen.

Wenn Sie die Java nicht unter Programmdateien installiert haben, müssen Sie die folgenden Schritte ausführen.

Führen Sie die icacls-Befehle von einer Befehlszeile mit erhöhten Rechten aus, um für den JRE-Zugriff Zugriff auf die SQLRUsergroup und die SQL Server-Dienstkonten (in ALL_APPLICATION_PACKAGES) zu gewähren. Die Befehle gewähren rekursiv Zugriff auf alle Dateien und Ordner unter dem angegebenen Verzeichnispfad.

  1. Vergeben Sie SQLRUserGroup-Berechtigungen.

    Hängen Sie für eine benannte Instanz den Namen der Instanz an SQLRUsergroup an (z. B. SQLRUsergroupINSTANCENAME).

    icacls "<PATH to JRE>" /grant "SQLRUsergroup":(OI)(CI)RX /T
    

    Sie können diesen Schritt überspringen, wenn Sie das JDK/die JRE in Windows im Standardordner unter „Programme“ installiert haben.

  2. Vergeben Sie AppContainer-Berechtigungen. Dieser Befehl erteilt Berechtigungen für die Computer-SID S-1-15-2-1, was ALL APPLICATION PACKAGES auf einer englischen Version von Windows entspricht. Alternativ können Sie icacls "<PATH to JRE>" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T in einer englischen Version von Windows verwenden.

    icacls "<PATH to JRE>" /grant *S-1-15-2-1:(OI)(CI)RX /T
    

Starten Sie den Dienst neu.

Starten Sie nach Abschluss der Installation die Datenbank-Engine neu, bevor Sie mit dem nächsten Schritt zum Aktivieren der Skriptausführung fortfahren.

Durch den Neustart des Diensts wird auch der zugehörige SQL Server-Launchpad-Dienst automatisch neu gestartet.

Sie können den Dienst neu starten, indem Sie mit der rechten Maustaste auf den Befehl Neu starten für die Instanz in SSMS klicken, den Bereich Dienste in der Systemsteuerung oder den SQL Server-Konfigurations-Manager verwenden.

Aktivieren der Skriptausführung

  1. Öffnen Sie SQL Server Management Studio. Stellen Sie eine Verbindung mit der Instanz her, auf der Sie die Spracherweiterungen installiert haben. Wählen Sie Neue Abfrage aus, um ein Abfragefenster zu öffnen, und führen Sie den folgenden Befehl aus:

    EXEC sp_configure;
    

    Die Funktion ist standardmäßig deaktiviert (value ist 0). Sie muss explizit von einem Administrator aktiviert werden, damit Sie Java-Code ausführen können.

  2. Führen Sie die folgende Anweisung aus, um die externe Funktion für die Skripterstellung zu aktivieren:

    EXEC sp_configure 'external scripts enabled', 1
    GO
    RECONFIGURE WITH OVERRIDE
    

    Führen Sie kein zweites Mal eine Neukonfiguration für Spracherweiterungen aus, wenn Sie die Funktion bereits für Machine Learning Services aktiviert haben. Die zugrunde liegende Erweiterungsplattform unterstützt beides.

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 eine externe Sprache mit dem Namen Java einer Datenbank auf SQL Server unter Windows hinzugefügt.

CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'javaextension.dll');
GO

Weitere Informationen finden Sie unter CREATE EXTERNAL LANGUAGE.

Überprüfen der Installation

Überprüfen Sie den Installationsstatus der Instanz in den Setupprotokollen.

Gehen Sie folgendermaßen vor, um zu überprüfen, ob alle zum Starten eines externen Skripts verwendeten Komponenten ausgeführt werden.

  1. Öffnen Sie in SQL Server Management Studio oder in Azure Data Studio ein neues Abfragefenster, und führen Sie die folgende Anweisung aus:

    EXEC sp_configure 'external scripts enabled';
    

    run_value ist jetzt auf 1 festgelegt.

  2. Öffnen Sie den Bereich Dienste oder den SQL Server-Konfigurations-Manager, und überprüfen Sie, ob der SQL Server-Launchpad-Dienst ausgeführt wird. Sie sollten über einen Dienst für jede Datenbank-Engine-Instanz verfügen, auf der Spracherweiterungen installiert sind. Weitere Informationen zum Dienst finden Sie unter Erweiterbarkeitsarchitektur in SQL Server Spracherweiterungen.

Zusätzliche Konfiguration

Wenn der Überprüfungsschritt erfolgreich war, können Sie Java-Code aus SQL Server Management Studio, Azure Data Studio, Visual Studio Code oder einem anderen Client ausführen, der T-SQL-Anweisungen an den Server senden kann.

Überprüfen Sie die zusätzlichen Konfigurationsschritte in diesem Abschnitt, wenn beim Ausführen des Befehls ein Fehler aufgetreten ist. Möglicherweise müssen Sie für den Dienst oder die Datenbank zusätzliche geeignete Konfigurationen vornehmen.

Auf Instanzebene kann eine zusätzliche Konfiguration Folgendes umfassen:

Für die Datenbank benötigen Sie möglicherweise die folgenden Konfigurationsupdates:

Hinweis

Ob eine zusätzliche Konfiguration erforderlich ist, hängt vom Sicherheitsschema, in dem Sie SQL Server installiert haben, sowie von Ihren Erwartungen bezüglich des Herstellens einer Verbindung mit der Datenbank und dem Ausführen externer Skripts seitens der Benutzer ab.

Empfohlene Optimierungen

Da nun alles funktioniert, möchten Sie möglicherweise auch zur Unterstützung der Java-Spracherweiterung den Server optimieren.

Optimieren des Servers für die Java-Spracherweiterung

Die Standardeinstellungen für das SQL Server-Setup dienen zur Optimierung des Lastenausgleichs des Servers für eine Vielzahl von Diensten, die von der Datenbank-Engine unterstützt werden, einschließlich ETL-Prozesse (Extrahieren, Transformieren und Laden), Reporting, Überwachung und Anwendungen, die SQL Server-Daten verwenden. Daher können in den Standardeinstellungen Ressourcen für Spracherweiterungen eingeschränkt oder gedrosselt sein, insbesondere für speicherintensive Vorgänge.

Es wird empfohlen, dass Sie zum Konfigurieren eines externen Ressourcenpools den SQL Server-Resource Governor verwenden, um sicherzustellen, dass Spracherweiterungsaufgaben über die entsprechende Priorität und die nötigen Ressourcen verfügen. Eventuell ist es auch sinnvoll, die Größe des Speichers zu ändern, der der SQL Server-Datenbank-Engine zugewiesen ist, oder die Anzahl der Konten zu erhöhen, die unter dem SQL Server-Launchpad-Dienst ausgeführt werden.

Wenn Sie die Standard Edition verwenden und nicht über den Resource Governor verfügen, können Sie zum Verwalten von Serverressourcen dynamische Verwaltungssichten (Dynamic Management Views, DMVs) und erweiterte Ereignisse sowie die Windows-Ereignisüberwachung verwenden.

Nächster Schritt

Java-Entwickler können mit einigen einfachen Beispielen loslegen und die Grundlagen der Funktionen von Java unter SQL Server kennenlernen. Informationen zum nächsten Schritt finden Sie unter dem folgenden Link: