在 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) 和更新版本:
使用 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 使用您慣用的 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,則必須使用對遠端共用位置具有讀取和執行權限的網域帳戶。
啟動 SQL Server 的安裝精靈。
在 [安裝] 索引標籤上,選取 [新增 SQL Server 獨立安裝或將功能加入至現有安裝] 。
在 [特徵選取] 頁面上,選取下列選項:
資料庫引擎 服務:若要搭配 SQL Server 使用語言延伸模組,您必須安裝 資料庫引擎 的實例。 您可以使用預設或具名執行個體。
機器學習服務和語言延伸模組:此選項會安裝支援 Java 程式碼執行的語言延伸模組元件。
如果您想要安裝預設 執行階段,請選取 [機器學習服務和語言延伸模組] 與 [Java]。
如果您想要使用自己的 Java Runtime,請選取 [機器學習服務和語言延伸模組] 。 請勿選取 [Java]。
如果您想要使用 R 和 Python,請參閱在 Windows 上安裝 SQL Server 機器學習 Services (Python 和 R)。
在 [準備安裝] 頁面上,確認包含這些選項,然後選取 [安裝] 。
- Database Engine 服務
- 機器學習服務和語言延伸模組
請注意組態檔儲存所在資料夾 (路徑
..\Setup Bootstrap\Log
底下) 的位置。 當安裝程式完成時,您可以在摘要檔案中檢閱已安裝的元件。安裝程式完成之後,如果您已指示重新啟動計算機,請立即進行。 當您完成安裝程式時,請務必從安裝精靈讀取訊息。 如需詳細資訊,請參閱< View and Read SQL Server Setup Log Files>。
新增 JRE_HOME 變數
JRE_HOME
是系統環境變數,可指定 Java 解譯器的位置。 在此步驟中,請在 Windows 上為它建立系統環境變數。
尋找並複製 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
。
尋找並複製 JRE 主路徑。
此路徑取決於運行時間和安裝選項。
Java 延伸模組會嘗試從路徑
%JRE_HOME%\bin\server
載入jvm.dll
。
在 [控制台] 中,開啟 [系統及安全性]、開啟 [系統],然後選取 [進階系統內容]。
選取 [環境變數]。
為
JRE_HOME
建立新的系統變數,其值為 JDK/JRE 路徑 (可在步驟 1 中找到)。
重新啟動啟動控制板。
開啟 SQL Server 組態管理員。
在 [SQL Server 服務] 底下,以滑鼠右鍵按一下 [SQL Server 啟動控制板],然後選取 [重新啟動] 。
註冊語言延伸模組。 遵循下列步驟來下載並註冊用於 Java 自訂執行階段的 Java 語言延伸模組。
java-lang-extension-windows-release.zip
從 SQL Server GitHub 存放庫的 Java 語言延伸模組下載檔案。 下載最新的 Windowsjava-lang-extension-windows.zip
檔案。 如果您尚未從 SQL Server 安裝程式安裝預設 Java,請確定 JRE 版本符合從 GitHub 下載的 Java。 如果想要使用自己安裝的 JRE 版本,您可能需要從 GitHub 原始程式碼編譯java-lang-extension
。使用 Azure Data Studio 來連線到您的 SQL Server 執行個體,並執行下列 T-SQL 命令,使用 CREATE EXTERNAL LANGUAGE 註冊 Java 語言延伸模組。
修改此陳述式中的路徑,以反映所下載語言延伸模組 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
重新啟動啟動控制板。
開啟 SQL Server 組態管理員。
在 [SQL Server 服務] 底下,以滑鼠右鍵按一下 [SQL Server 啟動控制板],然後選取 [重新啟動] 。
授與非預設 JRE 資料夾的存取權
如果您未安裝 SQL Server 隨附的預設 Java,且未在 下 /Program Files
安裝 Java,您必須執行下列步驟。
如果您未在程式檔下安裝 Java,您必須執行下列步驟。
從提升許可權的行執行 icacls 命令,以授與存取 JRE 的 SQLRUsergroup 和 SQL Server 服務帳戶存取ALL_APPLICATION_PACKAGES
權。 命令會遞歸地授與指定目錄路徑下所有檔案和資料夾的存取權。
提供 SQLRUserGroup 許可權
針對具名實例,將實例名稱附加至 SQLRUsergroup (例如 ,
SQLRUsergroupINSTANCENAME
。icacls "<PATH to JRE>" /grant "SQLRUsergroup":(OI)(CI)RX /T
如果您已將 JDK/JRE 安裝在 Windows 上的預設資料夾 [Program Files] 底下,則可以略過此步驟。
授與 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 組態管理員 重新啟動服務。
啟用指令碼執行
開啟 SQL Server Management Studio。 連線到您安裝語言延伸模組的執行個體、選取 [新增查詢] 開啟查詢視窗,然後執行下列命令:
EXEC sp_configure;
此功能預設為 off (
value
為0
),且必須由系統管理員明確啟用,您才能執行 Java 程式代碼。若要啟用外部指令碼功能,請執行下列陳述式:
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。
確認安裝
在安裝程式記錄中,檢查執行個體的安裝狀態。
使用下列步驟確認用於啟動外部指令碼的所有元件都正在執行。
在 SQL Server Management Studio 或 Azure Data Studio 中,開啟新的 [查詢] 視窗,並執行下列陳述式︰
EXEC sp_configure 'external scripts enabled';
run_value
現在設定為 1。開啟 [服務] 面板或 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 使用的基本概念。 針對下一個步驟,請參閱下列連結:
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應