在 Windows 上安裝 SQL Server Java 語言延伸模組

適用於:SQL Server 2019 (15.x) 和更新版本

了解如何在 Windows 上安裝適用於 SQL Server 的 Java 語言延伸模組元件。 Java 語言延伸模組是 SQL Server 語言延伸模組的一部分。

注意

此文章適用於在 Windows 上安裝適用於 SQL Server 的 Java 語言延伸模組。 針對 Linux,請參閱在 Linux 上安裝 SQL Server Java 語言延伸模組

必要條件

注意

功能和安裝選項會因 SQL Server 的版本而異。 使用版本選取器下拉式清單來選擇適當的 SQL Server 版本。

  • 如果您想要安裝 Java 語言延伸模組的支援,則需要 SQL Server 安裝程式。

  • 您可以視需要下載並安裝任何 JAVA 執行階段,包括最新 OpenJDK 的 Microsoft 組建或正式授權的 Java 執行階段。 在 SQL Server 2022 (16.x) 和更新版本中,SQL Server 安裝程式不會安裝 Java 運行時間。

  • 需要 資料庫引擎 實例。 您無法只安裝 Java 語言延伸模組功能,不過您可以以累加方式將它們新增至現有的實例。

  • 針對商務持續性, 語言延伸模組支援 Always On 可用性群組 。 您必須在每個節點上安裝語言延伸模組,並設定套件。 亦支援在 SQL Server 中的容錯移轉叢集執行個體上安裝 Java 語言延伸模組。

  • 請勿在域控制器上安裝 SQL Server 語言延伸模組或 Java 語言延伸模組。 安裝程式的語言延伸模組部分失敗。

  • 根據預設,系統會在 SQL Server 巨量資料叢集上安裝語言延伸模組與機器學習服務。 如果您使用的是巨量資料叢集,就不需要依照此文章中的步驟進行。 如需詳細資訊,請參閱對安裝有機器學習服務的 SQL Server 2019 巨量資料叢集執行 Python 與 R 指令碼

重要

安裝完成之後,請務必完成此文章中所述的設定後步驟。 這些步驟包括讓 SQL Server 使用外部程式碼,以及新增 SQL Server 代表您執行 Java 程式碼所需的帳戶。 設定變更通常需要重新啟動執行個體,或重新啟動啟動控制板服務。

Java JRE 或 JDK

注意

功能和安裝選項會因 SQL Server 的版本而異。 使用版本選取器下拉式清單來選擇適當的 SQL Server 版本。

使用 SQL Server 2022 (16.x),您可以下載並安裝任何 JAVA 執行階段,包括最新 OpenJDK 的 Microsoft 組建或正式授權的 Java 執行階段。

Java 11 目前是 Windows 上支援的版本。 Java Runtime Environment (JRE) 是最低需求,但如果您需要 Java 編譯器與開發套件,Java 開發套件 (JDK) 就很有用。 由於 JDK 全都包含,因此如果您安裝 JDK,則不需要 JRE。 在 Windows 上,建議您盡可能地將 JDK 安裝在預設的 /Program Files/ 資料夾下。 否則,需要進行額外的設定,才能授與可執行檔權限。 如需詳細資訊,請參閱此文件中的授與權限 (Windows) 一節。

有兩種方式可以安裝及使用 Java 搭配 SQL Server 2019 (15.x) 和更新版本:

  1. 使用 SQL Server 安裝隨附的預設 Java 執行階段。

    下表列出了安裝程式隨附的預設 Java 版本:

    SQL Server 版本 預設 Java 版本
    SQL Server 2019 (15.x) CU 23 和更新版本 OpenJDK 11.0.19 的 Microsoft 組建
    SQL Server 2019 (15.x) RTM - CU22 Azul Zulu JRE 11.0.3
  2. 使用您慣用的 Java 發行版本,而不是預設的 Java Runtime。

    Java 11 目前是 Windows 上支援的版本。 Java Runtime Environment (JRE) 是最低需求,但如果您需要 Java 編譯器與開發套件,Java 開發套件 (JDK) 就很有用。 由於 JDK 全都包含,因此如果您安裝 JDK,則不需要 JRE。 在 Windows 上,建議您盡可能地將 JDK 安裝在預設的 /Program Files/ 資料夾下。 否則,需要進行額外的設定,才能授與可執行檔權限。 如需詳細資訊,請參閱此文件中的授與權限 (Windows) 一節。

注意

假設 Java 回溯相容,舊版可能會運作,但 SQL Server 2019 (15.x) 的支援和測試版本是 Java 11。

取得安裝媒體

SQL Server 的下載位置因版本而異:

  • SQL Server Enterprise、Standard 和 Express Edition。 這些版本已獲得生產環境使用授權。 對於 Enterprise Edition 和 Standard Edition,請連絡您的軟體廠商以取得安裝媒體。 購買資訊和 Microsoft 合作夥伴目錄請見 Microsoft 購買網站
  • 最新的免費版本

執行安裝程式

如果是本機安裝,您必須以管理員身分執行安裝程式。 如果您是從遠端共用位置安裝 SQL Server,則必須使用對遠端共用位置具有讀取和執行權限的網域帳戶。

  1. 啟動 SQL Server 的安裝精靈。

  2. 在 [安裝] 索引標籤上,選取 [新增 SQL Server 獨立安裝或將功能加入至現有安裝] 。

  1. 在 [特徵選取] 頁面上,選取下列選項:

    資料庫引擎 服務:若要搭配 SQL Server 使用語言延伸模組,您必須安裝 資料庫引擎 的實例。 您可以使用預設或具名執行個體。

    機器學習服務和語言延伸模組:此選項會安裝支援 Java 程式碼執行的語言延伸模組元件。

    • 如果您想要安裝預設 執行階段,請選取 [機器學習服務和語言延伸模組] 與 [Java]

    • 如果您想要使用自己的 Java Runtime,請選取 [機器學習服務和語言延伸模組] 。 請勿選取 [Java]。

    • 如果您想要使用 R 和 Python,請參閱在 Windows 上安裝 SQL Server 機器學習 Services (Python 和 R)。

    Screenshot of the Feature options for Language Extensions.

    1. 如果您在上一步中選擇 [Java] 以安裝預設 Java 執行階段,將會顯示 [Java 安裝位置] 頁面。

      安裝此安裝隨附的預設 Java。 [提供此電腦上已安裝之不同版本的位置] 選項不會用於語言延伸模組。

      Screenshot of the Java install location.

  1. 在 [特徵選取] 頁面上,選取下列選項:

    資料庫引擎 服務:若要搭配 SQL Server 使用語言延伸模組,您必須安裝 資料庫引擎 的實例。 您可以使用預設或具名執行個體。

    機器學習服務和語言延伸模組:此選項會安裝支援 Java 程式碼執行的語言延伸模組元件。

    Screenshot of instance features.

  1. 在 [準備安裝] 頁面上,確認包含這些選項,然後選取 [安裝] 。

    • Database Engine 服務
    • 機器學習服務和語言延伸模組

    請注意組態檔儲存所在資料夾 (路徑 ..\Setup Bootstrap\Log 底下) 的位置。 當安裝程式完成時,您可以在摘要檔案中檢閱已安裝的元件。

  2. 安裝程式完成之後,如果您已指示重新啟動計算機,請立即進行。 當您完成安裝程式時,請務必從安裝精靈讀取訊息。 如需詳細資訊,請參閱< View and Read SQL Server Setup Log Files>。

新增 JRE_HOME 變數

JRE_HOME 是系統環境變數,可指定 Java 解譯器的位置。 在此步驟中,請在 Windows 上為它建立系統環境變數。

  1. 尋找並複製 JRE 主路徑。

    例如,預設 Java Runtime Zulu JRE 11.0.3 的 JRE 主路徑為 %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\AZUL-OpenJDK-JRE\

    根據您的 SQL Server 安裝路徑,或如果您選擇其他 Java 執行階段,您的 JDK 或 JRE 位置可能會與上述範例中的路徑不同。 即使您已安裝 JDK,您通常會在該安裝期間取得 JRE 子資料夾,因此請指向該案例中的 JRE 資料夾。 Java 延伸模組會嘗試從路徑 %JRE_HOME%\bin\server載入 jvm.dll

  1. 尋找並複製 JRE 主路徑。

    此路徑取決於運行時間和安裝選項。

    Java 延伸模組會嘗試從路徑 %JRE_HOME%\bin\server載入 jvm.dll

  1. 在 [控制台] 中,開啟 [系統及安全性]、開啟 [系統],然後選取 [進階系統內容]。

  2. 選取 [環境變數]。

  3. JRE_HOME 建立新的系統變數,其值為 JDK/JRE 路徑 (可在步驟 1 中找到)。

  1. 重新啟動啟動控制板

    1. 開啟 SQL Server 組態管理員

    2. 在 [SQL Server 服務] 底下,以滑鼠右鍵按一下 [SQL Server 啟動控制板],然後選取 [重新啟動] 。

  1. 註冊語言延伸模組。 遵循下列步驟來下載並註冊用於 Java 自訂執行階段的 Java 語言延伸模組。

    1. java-lang-extension-windows-release.zipSQL Server GitHub 存放庫的 Java 語言延伸模組下載檔案。 下載最新的 Windows java-lang-extension-windows.zip 檔案。 如果您尚未從 SQL Server 安裝程式安裝預設 Java,請確定 JRE 版本符合從 GitHub 下載的 Java。 如果想要使用自己安裝的 JRE 版本,您可能需要從 GitHub 原始程式碼編譯 java-lang-extension

    2. 使用 Azure Data Studio 來連線到您的 SQL Server 執行個體,並執行下列 T-SQL 命令,使用 CREATE EXTERNAL LANGUAGE 註冊 Java 語言延伸模組。

    3. 修改此陳述式中的路徑,以反映所下載語言延伸模組 zip 檔案 (java-lang-extension-windows-release.zip) 的位置,以及自訂 Java 安裝的位置 (%ProgramFiles%\Python)。

    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. 重新啟動啟動控制板

    1. 開啟 SQL Server 組態管理員

    2. 在 [SQL Server 服務] 底下,以滑鼠右鍵按一下 [SQL Server 啟動控制板],然後選取 [重新啟動] 。

授與非預設 JRE 資料夾的存取權

如果您未安裝 SQL Server 隨附的預設 Java,且未在 下 /Program Files安裝 Java,您必須執行下列步驟。

如果您未在程式檔下安裝 Java,您必須執行下列步驟。

提升許可權的行執行 icacls 命令,以授與存取 JRE 的 SQLRUsergroup 和 SQL Server 服務帳戶存取ALL_APPLICATION_PACKAGES權。 命令會遞歸地授與指定目錄路徑下所有檔案和資料夾的存取權。

  1. 提供 SQLRUserGroup 許可權

    針對具名實例,將實例名稱附加至 SQLRUsergroup (例如 , SQLRUsergroupINSTANCENAME

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

    如果您已將 JDK/JRE 安裝在 Windows 上的預設資料夾 [Program Files] 底下,則可以略過此步驟。

  2. 授與 AppContainer 權限。 此命令會將許可權授與計算機 SID S-1-15-2-1,這 ALL APPLICATION PACKAGES 相當於英文版的 Windows。 或者,您也可以在英文版的 Windows 上使用 icacls "<PATH to JRE>" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T

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

重新啟動服務

安裝完成時,請先重新啟動 資料庫引擎,再繼續進行下一個步驟,以啟用腳本執行。

重新啟動該服務也會自動重新啟動相關的 SQL Server Launchpad 服務。

您可以使用以滑鼠右鍵按下 SSMS 中實例的 [重新啟動] 命令、使用 控制台 中的 [服務] 面板,或使用 SQL Server 組態管理員 重新啟動服務

啟用指令碼執行

  1. 開啟 SQL Server Management Studio。 連線到您安裝語言延伸模組的執行個體、選取 [新增查詢] 開啟查詢視窗,然後執行下列命令:

    EXEC sp_configure;
    

    此功能預設為 off (value0),且必須由系統管理員明確啟用,您才能執行 Java 程式代碼。

  2. 若要啟用外部指令碼功能,請執行下列陳述式:

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

    如果您已啟用 機器學習 Services 的功能,請勿針對語言延伸模組執行第二次重新設定。 底層擴充性平台支援這兩者。

註冊外部語言

針對您要在其中使用語言擴充功能的每個資料庫,您必須使用 CREATE EXTERNAL LANGUAGE 來註冊外部語言。

下例會將外部語言呼叫的 Java 新增至 Windows 之 SQL Server 的資料庫。

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

如需詳細資訊,請參閱 CREATE EXTERNAL LANGUAGE

確認安裝

在安裝程式記錄中,檢查執行個體的安裝狀態。

使用下列步驟確認用於啟動外部指令碼的所有元件都正在執行。

  1. 在 SQL Server Management Studio 或 Azure Data Studio 中,開啟新的 [查詢] 視窗,並執行下列陳述式︰

    EXEC sp_configure 'external scripts enabled';
    

    run_value現在設定為 1。

  2. 開啟 [服務] 面板或 SQL Server 組態管理員,並確認 SQL Server Launchpad 服務正在執行。 每個已安裝語言延伸模組的 資料庫引擎 實例都應該有一個服務。 如需服務的詳細資訊,請參閱 SQL Server 語言延伸模組中的擴充性架構。

其他設定

如果驗證步驟成功,您就可以從 SQL Server Management Studio、Azure Data Studio、Visual Studio Code,或任何可以將 T-SQL 陳述式傳送到伺服器的其他用戶端來執行 Java 程式碼。

如果您在執行命令時遇到錯誤,請檢閱此節中的其他設定步驟。 您可能需要對服務或資料庫進行額外的適當設定。

在實例層級,額外的設定可能包括:

在資料庫上,您可能需要下列設定更新:

注意

是否需要其他設定取決於您的安全性架構、SQL Server 的安裝位置,以及預期使用者如何連線至資料庫並執行外部指令碼。

建議的最佳化

在一切都正常運作之後,建議您將伺服器最佳化以支援 Java 語言延伸模組。

針對 Java 語言延伸模組將伺服器最佳化

SQL Server 安裝程式的預設設定旨在針對 資料庫引擎 所支援的各種服務,將伺服器的平衡優化,其中包括擷取、轉換和載入 (ETL) 程式、報告、稽核,以及使用 SQL Server 數據的應用程式。 因此,在預設設定下,您可能會發現語言延伸模組的資源有時會受到限制或遭遇瓶頸,尤其是需要大量記憶體的作業。

為確保優先處理語言延伸模組工作並獲得適當的資源,建議您使用 SQL Server 資源管理員設定外部資源集區。 您也可以變更配置給 資料庫引擎的記憶體數量,或增加在 SQL Server Launchpad 服務下執行的帳戶數目。

如果您使用 Standard 版本且沒有資源管理員,您可以使用動態管理檢視 (DMV) 和擴充事件,以及 Windows 事件監視,協助管理伺服器資源。

後續步驟

Java 開發人員可以從一些簡單的範例開始,並了解 Java 如何搭配 SQL Server 使用的基本概念。 針對下一個步驟,請參閱下列連結: