Azure SQL 受控執行個體和 SQL Server 中機器學習服務的主要差異

本文說明 Azure SQL 受控執行個體中的機器學習服務SQL Server 機器學習服務在功能上的若干主要差異。

語言支援

SQL 受控執行個體和 SQL Server 中的機器學習服務都支援 Python 和 R 擴充性架構。 SQL 受控執行個體中的一個主要差異在於,只支援 Python 和 R,而且無法新增 Java 等外部語言。

SQL 受控執行個體和 SQL Server 中的 Python 和 R 的初始版本有所不同:

平台 Python 執行階段版本 R 執行階段版本
Azure SQL 受控執行個體 3.7.2 3.5.2
SQL Server 2022* - -
SQL Server 2019 3.7.1 3.5.2
SQL Server 2017 3.5.2 和 3.7.2 (CU22 和更新版本) 3.3.3 和 3.5.2 (CU22 和更新版本)
SQL Server 2016 無法使用 3.2.2 和 3.5.2 (SP2 CU14 和更新版本)

* 從 SQL Server 2022 開始,R、Python 和 Java 的執行階段不再隨 SQL 安裝程式一起提供或安裝。 相反地,安裝所需的 R 和/或 Python 自訂執行階段和套件。 如需詳細資訊,請參閱在 Windows 上安裝 SQL Server 2022 機器學習服務 (Python 與 R)

Python 和 R 套件

SQL 受控執行個體不支援相依於外部執行階段 (例如 Java) 或需要存取 OS API 以進行安裝或使用的套件。

如需管理 Python 和 R 套件的詳細資訊,請參閱:

透過 sqlmlutils 管理套件

如果您可以在本機組建以產生二進位套件作為輸出,則可以使用 sqlmlutils 安裝二進位套件。 如需範例,請參閱使用 sqlmlutils 安裝 R 套件使用 sqlmlutils 安裝 Python 套件

資源管理

在 SQL 受控執行個體中,無法透過 Resource Governor 來限制 R 資源,且不支援外部資源集區。

根據預設,啟用擴充性時,R 資源最多設定為可用 SQL 受控執行個體資源的 20%。 若要變更此預設百分比,請在 https://azure.microsoft.com/support/create-ticket/ 上建立 Azure 支援票證。

使用下列 SQL 命令啟用擴充性 (SQL 受控執行個體將重新啟動,且會有數秒的時間無法使用):

sp_configure 'external scripts enabled', 1;
RECONFIGURE WITH OVERRIDE;

若要停用擴充性並將 100% 的記憶體和 CPU 資源還原至 SQL Server,請使用下列命令:

sp_configure 'external scripts enabled', 0;
RECONFIGURE WITH OVERRIDE;

可供 SQL 受控執行個體使用的資源總數取決於您選擇的服務層級。 如需詳細資訊,請參閱 Azure SQL 資料庫購買模型

記憶體不足錯誤

記憶體使用量取決於 R 指令碼中的使用量,以及執行的平行查詢數目。 如果沒有足夠的記憶體可用來執行 R,您會收到錯誤訊息。 一般錯誤訊息包括:

  • Unable to communicate with the runtime for 'R' script for request id: *******. Please check the requirements of 'R' runtime
  • 'R' script error occurred during execution of 'sp_execute_external_script' with HRESULT 0x80004004. ...an external script error occurred: "..could not allocate memory (0 Mb) in C function 'R_AllocStringBuffer'"
  • An external script error occurred: Error: cannot allocate vector of size.

如果出現上述其中一個錯誤,您可以將資料庫調整為較高的服務層級,以解決問題。

如果在 Azure SQL 受控執行個體中發生記憶體不足的錯誤,請檢閱 sys.dm_os_out_of_memory_events

SQL 受控執行個體集區

目前 Azure SQL 受控執行個體集區 (預覽版) 上不支援機器學習服務。

輸出網路存取

不允許或已封鎖網路存取,且無法啟用。 Azure SQL 受控執行個體的輸出網路連線不適用於機器學習服務。

下一步