你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure SQL 托管实例和 SQL Server 中机器学习服务之间的主要差异

本文介绍 Azure SQL 托管实例中的机器学习服务SQL Server 机器学习服务在功能上的几个主要区别。

语言支持

SQL 托管实例和 SQL Server 中的机器学习服务都支持 Python 和 R 扩展性框架。 SQL 托管实例的一个关键区别是仅支持 Python 和 R,不能添加 Java 等外部语言。

Python 和 R 的初始版本在 SQL 托管实例和 SQL Server 中有所不同:

平台 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 开始,SQL 安装程序不再随附或安装有 R、Python 和 Java 的运行时。 请改为安装所需的 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 托管实例的出站网络连接不适用于机器学习服务。

后续步骤