使用繫結在 SQL Server 機器學習服務中升級 Python 和 R 執行階段
適用於: SQL Server 2016 (13.x) SQL Server 2017 (14.x)
重要
Machine Learning Server (先前稱為 R Server) 的支援已於 2022 年 7 月 1 日結束。 如需詳細資訊,請參閱 Machine Learning Server 怎麼了?
本文說明如何使用名為繫結的安裝程序,在 SQL Server 2016 R Services 或 SQL Server 2017 機器學習服務中升級 R 或 Python 執行階段。 您可以透過「繫結」至 Microsoft Machine Learning Server,取得 Python 和 R 的較新版本。
重要
本文說明用來升級 R 和 Python 執行階段的舊方法,名為繫結。 如果您已安裝 SQL Server 2016 Services Pack (SP) 2 的累積更新 (CU) 14 或更新版本,或 SQL Server 2017 的累積更新 (CU) 22 或更新版本,則應參閱如何將預設的 R 或 Python 語言執行階段變更為更新版本。
何謂繫結?
繫結是一種安裝程序,會使用來自 Microsoft Machine Learning Server 的較新的可執行檔、程式庫與工具,取代 R_SERVICES 與 PYTHON_SERVICES 資料夾的內容。
維護模型所包含的上傳元件已經變更。 這些服務更新與最近的生命週期上的 Microsoft R Server 與 Machine Learning Server 支援時間表 (英文) 一致。
除了元件版本和服務更新以外,繫結不會變更安裝的基礎:
- Python 和 R 整合仍然是資料庫引擎執行個體的一部分。
- 授權不變 (沒有額外成本與繫結相關聯)。
- SQL Server 支援原則仍然適用於資料庫引擎。
本文的其餘部分將說明繫結機制,以及它針對每個版本的 SQL Server 的運作方式。
注意
繫結僅適用於繫結至 SQL Server 執行個體的資料庫內執行個體。 在此情況下,獨立安裝不需要繫結。
SQL Server 2016 繫結考量
針對 SQL Server 2016 R Services 客戶,繫結提供:
- 已更新的 R 套件。
- 不是原始安裝 (MicrosoftML \(英文\)) 一部分的新套件
- 適用於情感分析和影像偵測的預先定型機器學習模型。
所有繫結都可以在 Microsoft Machine Learning Server \(英文\) 的每個新主要和次要版本推出時進一步重新整理。
版本對應
下表為版本對應。 每個對應都顯示所有版本的套件版本。 當您繫結至 Microsoft Machine Learning Server (在 Microsoft Machine Learning Server 9.2.1 開始加入 Python 支援之前稱為 R Server) 時,可以檢閱升級路徑。
繫結不保證 R 或 Anaconda 的最新版本。 當您繫結至 Microsoft Machine Learning Server 時,您可以透過安裝程式安裝 R 或 Python 版本,安裝程式可能不是 Web 上可取得的最新版本。
元件 | 初始版本 | R Server 9.0.1 | R Server 9.1 | Machine Learning Server 9.2.1 \(英文\) | Machine Learning Server 9.3 \(英文\) | Machine Learning Server 9.4.7 \(英文\) |
---|---|---|---|---|---|---|
Microsoft R Open (MRO) (R) | R 3.2.2 | R 3.3.2 | R 3.3.3 | R 3.4.1 | R 3.4.3 | R 3.5.2 |
RevoScaleR | 8.0.3 | 9.0.1 | 9.1 | 9.2.1 | 9.3 | 9.4.7 |
MicrosoftML | n.a. | 9.0.1 | 9.1 | 9.2.1 | 9.3 | 9.4.7 |
預先定型的模型 | n.a. | 9.0.1 | 9.1 | 9.2.1 | 9.3 | 9.4.7 |
sqlrutils | n.a. | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
olapR | n.a. | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
元件 | 初始版本 | Machine Learning Server 9.3 | Machine Learning Server 9.4.7 |
---|---|---|---|
Microsoft R Open (MRO) (R) | R 3.3.3 | R 3.4.3 | R 3.5.2 |
RevoScaleR | 9.2 | 9.3 | 9.4.7 |
MicrosoftML | 9.2 | 9.3 | 9.4.7 |
sqlrutils | 1.0 | 1.0 | 1.0 |
olapR | 1.0 | 1.0 | 1.0 |
Anaconda 4.2 (Python 3.5) | 4.2/3.5.2 | 4.2/3.5.2 | |
revoscalepy | 9.2 | 9.3 | 9.4.7 |
microsoftml | 9.2 | 9.3 | 9.4.7 |
預先定型的模型 | 9.2 | 9.3 | 9.4.7 |
元件升級的運作方式
當您將現有的 Python 和 R 安裝繫結至 Machine Learning Server 時,可執行檔、Python 和 R 程式庫都會升級。
當您在具有 Python 或 R 整合的現有 SQL Server 資料庫引擎執行個體上執行安裝程式時,Microsoft Machine Learning Server 安裝程式 \(英文\) 會執行繫結。
安裝程式會偵測現有的功能,並提示您重新繫結至 Machine Learning Server。
在繫結期間,C:\Program Files\Microsoft\ML Server\R_SERVER
和 \PYTHON_SERVER
的較新可執行檔和程式庫,會覆寫 C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES
和 \PYTHON_SERVICES
的內容。
繫結僅適用於 Python 和 R 功能。 Python 和 R 的開放原始碼套件由下列項目組成:
- Anaconda
- Microsoft R Open
- 專屬套件 RevoScaleR
- Revoscalepy
繫結不會變更資料庫引擎執行個體的支援模型或 SQL Server 的版本。
繫結是可還原的。 您可以藉由解除繫結執行個體並修復 SQL Server 資料庫引擎執行個體來還原為 SQL Server 服務。
使用安裝程式繫結至 Machine Learning Server
請遵循步驟,使用安裝程式將 SQL Server 繫結至 Microsoft Machine Learning Server。
在 SSMS 中,執行
SELECT @@version
以確認伺服器符合最低組建需求。針對 SQL Server 2016 R Services,最低為 Service Pack 1 和 CU3。
檢查 R base 和 RevoScaleR 套件的版本,確認現有的版本低於您打算用來取代它們的版本。
EXECUTE sp_execute_external_script @language=N'R' ,@script = N'str(OutputDataSet); packagematrix <- installed.packages(); Name <- packagematrix[,1]; Version <- packagematrix[,3]; OutputDataSet <- data.frame(Name, Version);' , @input_data_1 = N'' WITH RESULT SETS ((PackageName nvarchar(250), PackageVersion nvarchar(max) ))
關閉 SSMS 和目前與 SQL Server 連線的任何其他工具。 繫結會覆寫程式檔案。 如果 SQL Server 有已開啟的工作階段,繫結將會失敗,並顯示繫結錯誤碼 6。
將 Microsoft Machine Learning Server 下載到您要升級執行個體的電腦上。 我們建議使用最新版本 \(英文\)。
將資料夾解壓縮並啟動位於 MLSWIN93 之下的 ServerSetup.exe。
在 [設定安裝] 上,確認要升級的元件,並檢閱相容執行個體的清單。
在 [授權合約] 頁面上,選取 [我接受這些條款] 以接受 Machine Learning Server 的授權條款。
在後續頁面上,同意您所選取的任何開放原始碼元件 (例如 Microsoft R Open 或 Python Anaconda 散發) 的其他授權條件。
在 [就快完成了] 頁面上,記下安裝資料夾。 預設資料夾為 \Program Files\Microsoft\ML Server。
如果您想要變更安裝資料夾,請選取 [進階] 以返回精靈的第一頁。 不過,您必須重複所有先前的選取項目。
如果升級失敗,請檢查 SqlBindR 錯誤碼 以取得詳細資訊。
離線繫結 (無法存取網際網路)
對於沒有網際網路連線的系統,您可以將安裝程式和 .cab 檔案下載到連線到網際網路的電腦,然後將檔案傳輸到隔離的伺服器。
安裝程式 (ServerSetup.exe) 包含 Microsoft 套件 (RevoScaleR、MicrosoftML、olapR、sqlRUtils)。 .cab 檔案提供其他核心元件。 例如,"SRO" cab 提供 R Open,這是 Microsoft 的開放原始碼 R 散發。
下列指示說明如何放置檔案以進行離線安裝。
下載 .cab 檔案。 下列連結適用於 9.3 版本。 如果您需要舊版,可以在 R Server 9.1 中找到其他連結。 回想一下,您只能將 Python/Anaconda 新增至 SQL Server 機器學習服務執行個體。 Python 與 R 都存在預先定型模型;.cab 會以您所使用的語言提供模型。
功能 下載 R SRO_3.4.3.0_1033.cab Python SPO_9.3.0.0_1033.cab 預先定型的模型 MLM_9.3.0.0_1033.cab 將 .zip 和 .cab 檔案傳送到目標伺服器。
在伺服器上,於 [執行] 命令中輸入
%temp%
,以取得暫存目錄的實體位置。 實體路徑因機器而異,但通常是C:\Users\<your-user-name>\AppData\Local\Temp
。將 .cab 檔案放在 %temp% 資料夾中。
解壓縮安裝程式。
執行 ServerSetup.exe 並遵循螢幕上的提示來完成安裝。
命令列作業
提示
找不到 SqlBindR 嗎? 您可能未執行安裝程式。 只有在執行 Machine Learning Server 安裝程式之後,才能使用 SqlBindR。
以系統管理員身分開啟命令提示字元,並瀏覽至包含 sqlbindr.exe 的資料夾。 預設位置是 C:\Program Files\Microsoft\MLServer\Setup
輸入下列命令以檢視可用的執行個體清單︰
SqlBindR.exe /list
請記下列出的完整執行個體名稱。 例如,針對預設執行個體,執行個體名稱可能是 MSSQL14.MSSQLSERVER,或類似 SERVERNAME.MYNAMEDINSTANCE 的名稱。
搭配 /bind 引數執行 SqlBindR.exe 命令。 使用上一個步驟中所傳回的執行個體名稱指定要升級的執行個體名稱。
例如,若要升級預設執行個體,請輸入:
SqlBindR.exe /bind MSSQL14.MSSQLSERVER
當升級完成後,請重新啟動與任何已修改的執行個體相關的啟動控制板服務。
還原或解除繫結執行個體
您可以將繫結的執行個體還原到 Python 和 R 元件的初始安裝 (由 SQL Server 安裝程式建立)。 還原回 SQL Server 服務的過程分為三個部分。
步驟 1:解除繫結
您有兩個復原繫結的選項:重新執行安裝程式,或使用 SqlBindR 命令列公用程式。
使用安裝程式解除繫結
- 找出 Machine Learning Server 的安裝程式。 如果您已移除安裝程式,則可能需要再次下載,或從另一部電腦加以複製。
- 請務必在具有要解除繫結之執行個體的電腦上執行安裝程式。
- 安裝程式會識別用於解除繫結之候選項目的本機執行個體。
- 取消選取您想要還原為原始設定之執行個體旁的核取方塊。
- 接受所有授權合約。
- 選取 [完成]。 該程序需要一段時間。
使用命令列解除繫結
開啟命令提示字元並瀏覽至包含 sqlbindr.exe 的資料夾,如上一節所述。
搭配 /unbind 引數執行 SqlBindR.exe 命令,並指定執行個體。
例如,以下命令列會還原預設執行個體:
SqlBindR.exe /unbind MSSQL14.MSSQLSERVER
步驟 2:修復 SQL Server 執行個體
執行 SQL Server 安裝程式,以修復具有 Python 和 R 功能的資料庫引擎執行個體。 已經存在的更新會予以保留。 如果 Python 和 R 套件的維護更新遺漏更新,則適用下一個步驟。
替代解決方案:完全解除安裝並重新安裝資料庫引擎執行個體,然後套用所有服務更新。
步驟 3:新增任何協力廠商套件
您可能已將其他開放原始碼或協力廠商套件新增至您的套件程式庫。 由於反轉繫結會切換預設套件程式庫的位置,因此必須將套件重新安裝至 Python 和 R 現在使用的程式庫中。 如需詳細資訊,請參閱 R 套件資訊和安裝,以及 Python 套件資訊和安裝。
SqlBindR.exe 命令語法
使用量
sqlbindr [/list] [/bind <SQL_instance_ID>] [/unbind <SQL_instance_ID>]
參數
名稱 | 描述 |
---|---|
list | 顯示目前電腦上所有 SQL Server 執行個體識別碼的清單 |
bind | 將指定的 SQL Server 執行個體升級到最新版 R Server,並確保執行個體自動取得 R Server 的未來升級 |
unbind | 將最新版 R Server 從指定的 SQL Server 執行個體解除安裝,並防止未來的 R Server 升級影響執行個體 |
繫結錯誤
Machine Learning Server 安裝程式和 SqlBindR 都會傳回下列錯誤碼和訊息。
錯誤碼 | 訊息 | 詳細資料 |
---|---|---|
繫結錯誤 0 | 確定 (成功) | 已傳遞繫結,但沒有任何錯誤。 |
繫結錯誤 1 | 無效的引數 | 語法錯誤。 |
繫結錯誤 2 | 無效的動作 | 語法錯誤。 |
繫結錯誤 3 | 無效的執行個體 | 執行個體存在,但對繫結而言無效。 |
繫結錯誤 4 | 不可繫結 | |
繫結錯誤 5 | 已繫結 | 您執行了 bind 命令,但指定的執行個體已經繫結。 |
繫結錯誤 6 | 繫結失敗 | 解除繫結執行個體時發生錯誤。 如果您執行 Machine Learning Server 安裝程式,但未選取任何功能,就會發生此錯誤。 繫結需要您同時選取 MSSQL 執行個體與 Python 和 R (假設執行個體是 SQL Server 2017)。 如果 SqlBindR 無法寫入 [Program Files] 資料夾,也會發生此錯誤。 開啟工作階段或 SQL Server 的控制代碼會導致此錯誤發生。 如果您收到此錯誤,請在啟動任何新的工作階段之前,將電腦重新開機並重做繫結步驟。 |
繫結錯誤 7 | 未繫結 | 資料庫引擎執行個體具有 R Services 或 SQL Server 機器學習服務。 執行個體未繫結至 Microsoft Machine Learning Server。 |
繫結錯誤 8 | 解除繫結失敗 | 解除繫結執行個體時發生錯誤。 |
繫結錯誤 9 | 找不到任何執行個體 | 在這部電腦上找不到任何資料庫引擎執行個體。 |
已知問題
本節列出使用 SqlBindR.exe 公用程式的特定已知問題,或可能會影響 SQL Server 執行個體之 Machine Learning Server 升級的已知問題。
還原先前安裝的套件
SqlBindR.exe 無法藉由升級至 Microsoft R Server 9.0.1 來還原原始套件或 R 元件。 在執行個體上使用 SQL Server 修復,並套用所有服務版本。 重新啟動執行個體。
較新的 SqlBindR 版本會自動還原 R 原始功能,而不需要重新安裝 R 元件或重新修補伺服器。 不過,您必須安裝在初始安裝之後可能已新增的任何 R 套件更新。
使用 R 命令使用資料庫中的記錄將已安裝的套件同步處理到檔案系統。 如需詳細資訊,請參閱 SQL Server 的 R 套件管理。
SQL Server 中遭覆寫之 sqlbinr.ini 檔案的問題
案例:將 Machine Learning Server 9.4.7 繫結到 SQL Server 2017 時,會發生此問題。 當 Python 有所更新或被繫結時,或當您更新為新的 CU 時,Python 本身並不知道已被繫結,所以會覆寫檔案。 R 沒有已知問題。
您可以在不是空的 PYTHON_SERVICES 目錄中,建立 sqlbindr.ini
檔案,以暫時解決此問題。 內容不會影響檔案的運作方式。
建立包含 9.4.7.82 的 sqlbindr.ini
檔案,並儲存到此位置:
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES
從 SQL Server 進行多重升級的問題
案例:先前已升級到 9.0.1 的 SQL Server 2016 R Services 執行個體。 已針對 Microsoft R Server 9.1.0 執行新安裝程式。 安裝程式顯示所有有效執行個體的清單。 根據預設,安裝程式會選取先前繫結的執行個體。 如果繼續,先前繫結的執行個體會解除繫結。 結果是會移除先前的 9.0.1 安裝,除了安裝新版 Microsoft R Server (9.1.0),任何相關套件都未安裝。
因應措施是修改現有的 R Server 安裝,如下所示:
- 在 [控制台] 中,開啟 [新增或移除程式]。
- 找到 Microsoft R Server,然後選取 [變更/修改]。
- 當安裝程式啟動時,請選取您想要繫結至 9.1.0 的執行個體。
Microsoft Machine Learning Server 9.2.1 和 9.3 不會有這個問題。
繫結或解除繫結會保留多個暫存資料夾
安裝完成後請移除暫存資料夾。
注意
請務必等到安裝完成。 移除與某個版本相關聯的 R 程式庫,然後再加入新的 R 程式庫可能需要很長時間。 當作業完成時,就會移除暫存資料夾。