通过


在 Windows 上安装 SQL Server 机器学习 Services (Python 和 R)

适用于: SQL Server 2016 (13.x) SQL Server 2017 (14.x) SQL Server 2019 (15.x)

本文介绍如何在 Windows 上安装 SQL Server 机器学习 Services。 可以使用 机器学习 Services 在数据库中运行 Python 和 R 脚本。

重要

这些说明适用于SQL Server 2016(13.x)、SQL Server 2017(14.x)和 SQL Server 2019(15.x)。 有关 SQL Server 2022 (16.x),请参阅 安装 SQL Server 2022 机器学习服务在 Windows 上

Python 和 R 版本参考

下表显示了每个SQL Server版本随附的Python和 R 运行时版本。 使用此表确定SQL Server实例可用的语言版本。

SQL Server 版本 Python 版本 R 版本
SQL Server 2016 (13.x) N/A (仅限 R) 3.2.2
SQL Server 2017 (14.x) RTM - CU21 3.5.2 3.3.3
SQL Server 2017 (14.x) CU22 及更高版本 3.5.2 和 3.7.2 3.3.3 和 3.5.2
SQL Server 2019 (15.x) 3.7.1 3.5.2
SQL Server 2022 (16.x) 3.10.2 4.2.0

注意

从 SQL Server 2022(16.x)开始,R、Python 和 Java 的运行时不再随SQL Server安装程序一起安装。 而是安装所需的自定义运行时和包。 有关详细信息,请参阅 在 Windows 上安装 SQL Server 2022 机器学习服务

有关所有受支持版本的详细信息,请参阅 什么是 SQL Server 机器学习 Services?

预安装清单

  • 需要数据库引擎实例。 你不能只安装Python或 R 功能,尽管你可以以增量方式将它们添加到现有的独立实例。

  • 对于业务连续性,机器学习服务支持 Always On 可用性组。 在每个节点上安装机器学习服务并配置包。

  • 在 SQL Server 2017 的 Always On 故障转移群集实例上安装 机器学习 Services 不支持。 SQL Server 2019 及更高版本支持它。 必须在安装时安装机器学习服务,安装后无法将功能添加到现有故障转移群集实例。

  • 不要在域控制器上安装机器学习服务。 安装机器学习服务部分将失败。

  • 不要在运行数据库实例的同一台计算机上安装 Shared Features>机器学习 Server (独立)。 一个独立服务器将争夺相同的资源,并降低这两个安装的性能。

  • 支持与其他版本的 Python 和 R 并行安装,但不建议安装。 因为 SQL Server 实例使用其独立的开源 R 和 Anaconda 发行版的副本,所以受到支持。 不建议使用,因为运行在SQL Server外部计算机上使用Python和 R 的代码可能会导致问题:

    • 使用不同的库和不同的可执行文件将创建与SQL Server中运行的内容不一致的结果。
    • SQL Server无法管理在外部库中运行的 R 和Python脚本,从而导致资源争用。

注意

默认情况下,机器学习服务安装在SQL Server 大数据群集。 如果使用大数据群集,则无需按照本文中的步骤进行操作。 有关详细信息,请参阅 在 大数据群集0 上使用 机器学习 服务(Python 和 R)。

重要

安装完成后,请务必完成本文中所述的配置后步骤。 这些步骤包括使SQL Server能够使用外部脚本并添加SQL Server代表你运行 R 和Python作业所需的帐户。 配置更改通常需要重启实例或重启 Launchpad 服务。

获取安装介质

SQL Server的下载位置取决于版本:

  • SQL Server Enterprise、Standard 和 Express 版本。 这些版本已获得生产使用许可。 如需 Enterprise 和 Standard 版本,请联系软件供应商获取安装媒体。 你可以在 Microsoft 采购网站上找到采购信息和 Microsoft 合作伙伴目录。

  • 最新免费版本。

有关支持 Python 和 R 与 机器学习 Services 集成的 SQL Server 版本的详细信息,请参阅 SQL Server 2017 的版本和支持的功能

有关支持 Python 和 R 与 机器学习 Services 集成的 SQL Server 版本,请参阅 SQL Server 2019 的版本和支持功能

运行安装程序

对于本地安装,必须以管理员身份运行安装程序。 如果从远程共享安装SQL Server,则必须使用对远程共享具有读取和执行权限的域帐户。

  1. 启动SQL Server的设置向导。

  2. installation 选项卡上,选择“新建SQL Server独立安装或向现有安装添加功能

    Screenshot,显示用于创建SQL Server独立安装或向现有安装添加功能的选项。

    Screenshot 显示选项:使用新的 SQL Server 独立安装,或向现有安装添加功能。

  3. 在“功能选择” 页上,选择以下选项:

    • 数据库引擎 Services

      若要将 R 和Python与SQL Server一起使用,必须安装数据库引擎的实例。 可使用默认实例或命名实例。

    • 机器学习服务(数据库内)

      此选项安装支持 R 和Python脚本执行的数据库服务。

    • 数据库引擎 Services

      若要将 R 或Python用于SQL Server,必须安装数据库引擎的实例。 可使用默认实例或命名实例。

    • 机器学习 服务和语言扩展

      此选项安装支持 R 和Python脚本执行的数据库服务。

    • R

      选择此选项可添加 Microsoft R 包、解释器和开源 R。

    • Python

      选择此选项可以添加Microsoft Python包、Python可执行文件,并从 Anaconda 分发版中选择库。 有关SQL Server版本附带的特定Python版本,请参阅 Python 和 R 版本参考

    有关安装和使用 Java 的信息,请参阅 在 Windows 上安装 SQL Server Java 语言扩展

    显示 R 和 Python 功能选项的截图。

    显示选择 R 和 Python 功能选项的截图。

    注意

    请勿在共享功能下选择独立服务器 机器学习选项。 该选项适用于单独的计算机。

  1. 在“同意安装 Microsoft R Open”页上,选择“接受”“下一步”。

    许可协议涵盖以下内容:

    • Microsoft R Open。
    • 开放源代码 R 基本包和工具。
    • Microsoft 开发团队提供的增强 R 软件包和连接提供程序。
  2. Consent to Install Python 页上,选择 Accept>Next。 Python开源许可协议还涵盖 Anaconda 和相关工具,以及来自Microsoft开发团队的一些新Python库。

    注意

    如果正在使用的计算机无法访问 Internet,则可以在此时暂停安装以单独下载安装程序。 有关详细信息,请参阅在没有 Internet 连接的情况下安装机器学习组件。

  3. 在“准备安装”页面上,验证是否已包括这些选择,然后选择“安装”:

    • 数据库引擎服务
    • 机器学习服务(数据库内)
    • R、Python 或两者

    请注意配置文件存储路径 下的文件夹位置。 安装完成后,可以在“摘要”文件中查看已安装的组件。

  4. 安装完成后,如果收到重启计算机的指示,请重启。 安装完成后,请务必阅读来自安装向导的消息。 有关详细信息,请参阅 View 并读取SQL Server安装程序日志文件

  1. 在“同意安装 Microsoft R Open”页上,选择“接受”“下一步”。 该许可协议涵盖 Microsoft R Open,其中包括分发开源 R 基础包和工具。 还包括 Microsoft 开发团队提供的增强 R 包和连接提供程序。

  2. Consent to Install Python 页上,选择 Accept>Next。 Python开源许可协议还涵盖 Anaconda 和相关工具,以及来自Microsoft开发团队的一些新Python库。

  3. 在“准备安装”页面上,验证是否已包括这些选择,然后选择“安装”:

    • 数据库引擎 服务
    • 机器学习服务(数据库内)
    • R、Python 或两者

    请注意配置文件存储路径 下的文件夹位置。 安装完成后,可以在“摘要”文件中查看已安装的组件。

  4. 安装完成后,如果收到重启计算机的指示,请重启。 安装完成后,请务必阅读来自安装向导的消息。 有关详细信息,请参阅 View 并读取SQL Server安装程序日志文件

设置环境变量。

(仅适用于 R 功能集成)应设置 环境变量,以确保从 Intel 数学核心函数库 (MKL) 计算得到一致的输出结果:

  1. 在控制面板中, 选择 System and Security>System>Advanced System Settings>Environment Variables

  2. 创建新的用户或系统变量:

    • 将变量名称设置为 。
    • 将变量值设置为 。

此步骤需要重启服务器。 如果要启用脚本执行,则可以在完成所有配置工作之前暂停重启。

启用脚本执行

  1. 使用 SQL Server Management Studio (SSMS)连接到安装SQL Server 机器学习服务的实例。

  2. 选择“新建查询”打开查询窗口,然后运行以下命令:

    EXEC sp_configure
    
  3. 属性 的值目前应为 。 默认情况下,此功能处于关闭状态。 若要启用它,以便可以运行 R 或Python脚本,请运行以下语句:

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

    如果已为 R 语言启用该功能,则无需为 Python 再次运行 RECONFIGURE。 基础扩展性平台支持这两种语言。

重新启动服务。

安装完成后,重启数据库引擎。 重启服务还会自动重启相关的SQL Server Launchpad 服务。

可以使用以下任一方法重启服务:

  • 在 SSMS 中对象资源管理器实例的右键单击 Restart 命令
  • 控制面板内的 Microsoft 管理控制台(MMC)项中的 服务
  • SQL Server 配置管理器

验证安装

使用以下步骤验证用于启动外部脚本的所有组件是否都在运行:

  1. 在SQL Server Management Studio中,打开新的查询窗口并运行以下命令:

    EXECUTE sp_configure  'external scripts enabled'
    

    然后,将 设置为 。

  2. 打开 Services 控制面板项或SQL Server 配置管理器,并验证 SQL Server Launchpad 服务是否正在运行。 对于安装了 R 或Python的每个数据库引擎实例,应该有一个服务。 有关服务的详细信息,请参阅 SQL Server 机器学习 Services 中的 Extensibility 体系结构

  3. 如果 Launchpad 正在运行,则可以运行简单的Python和 R 脚本,以验证外部脚本运行时是否可以与SQL Server通信。

    在 SQL Server Management Studio 中打开新的 Query 窗口,然后运行如下脚本:

    • 对于 R:

      EXEC sp_execute_external_script  @language =N'R',
      @script=N'
      OutputDataSet <- InputDataSet;
      ',
      @input_data_1 =N'SELECT 1 AS hello'
      WITH RESULT SETS (([hello] int not null));
      GO
      
    • 对于Python:

      EXEC sp_execute_external_script  @language =N'Python',
      @script=N'
      OutputDataSet = InputDataSet;
      ',
      @input_data_1 =N'SELECT 1 AS hello'
      WITH RESULT SETS (([hello] int not null));
      GO
      

    如果是首次加载外部脚本运行时,则该脚本可能需要一些时间才能运行。 结果应如下所示:

    你好
    1

注意

不会自动返回Python脚本中使用的列或标题。 若要在输出结果中添加列名称,则必须为返回数据集指定架构。 为此,请使用存储过程的 参数,命名列并指定 SQL 数据类型。

例如,可以添加以下行来生成任意列名:。

应用更新

现有安装

如果已将机器学习服务添加到现有SQL Server实例,并且以前已应用累积更新(CU),则数据库引擎的版本和机器学习服务功能可能有所不同。 这种差异可能会导致意外行为或错误,因为 和 的版本不同。

按照以下步骤将 机器学习 服务引入与数据库引擎相同的版本:

  1. 查找您的数据库引擎的累积更新。 运行此 T-SQL 语句:

    SELECT @@VERSION
    

    下面是 SQL Server 2019 CU 8 的示例输出:

    Microsoft SQL Server 2019 (RTM-CU8-GDR) (KB4583459) - 15.0.4083.2 (X64)   Nov  2 2020 18:35:09   Copyright (C) 2019 Microsoft Corporation  Developer Edition (64-bit) on Windows 10 Enterprise 10.0 (X64) (Build 19042: ) (Hypervisor)
    

    有关详细信息,请参阅 确定SQL Server及其组件的版本、版本和更新级别

  2. 如有必要,请下载已为数据库引擎安装的累积更新。

  3. 运行累积更新的安装,并按照说明再次安装机器学习服务。 选择安装机器学习服务的现有实例。 升级状态将在“功能选择”页上显示“未完全安装”。

  4. 选择“下一步”并继续安装。

新安装

如果在安装 SQL Server 数据库引擎时一并安装机器学习服务,建议同时对数据库引擎和机器学习组件应用最新的累积更新。

在连接 Internet 的设备上,累积更新通常通过Windows 更新应用。 但你也可以使用以下步骤进行受控更新。 为数据库引擎应用更新时,安装程序会为在同一实例上安装的任何Python或 R 功能拉取累积更新。

断开连接的服务器需要执行额外的步骤。 有关详细信息,请参阅 在没有 Internet 连接的计算机上安装 应用累积更新。

  1. 从已安装的基线实例开始:SQL Server初始版本。

  2. 转到 Microsoft SQL Server 更新列表

  3. 选择最新的累积更新。 自动下载并提取可执行文件。

  4. 运行设置并接受许可条款。

  5. 在“功能选择”页上,查看应用了累积更新的功能。 应看到为当前实例安装的每个功能,包括机器学习功能。 安装程序会下载更新所有功能所需的 CAB 文件。

    显示已安装功能摘要的屏幕截图。

  6. 在向导中继续操作。 接受 R 和Python分发版的许可条款。

其他配置

如果外部脚本验证步骤成功,则可以从 SQL Server Management Studio、Visual Studio Code 或任何其他可将 T-SQL 语句发送到服务器的客户端运行 R 或Python命令。

如果在运行命令时遇到错误,可能需要对服务或数据库进行额外的配置。 在实例级别,其他配置可能包括:

在Windows SQL Server 2019 年,隔离机制发生了变化。 此机制会影响 SQLRUserGroup、防火墙规则、文件权限和默示身份验证。 有关详细信息,请参阅 机器学习服务的隔离更改

在数据库上,可能需要配置更新。 有关详细信息,请参阅 授予用户使用 SQL Server 机器学习服务的权限

注意

是否需要其他配置取决于安全架构、安装SQL Server的位置,以及用户如何连接到数据库并运行外部脚本。

建议的优化

一切正常后,你可能还希望优化服务器以支持机器学习或安装预先训练的机器学习模型。

添加更多工作者账户

如果预期会有很多用户同时运行脚本,则可以增加分配给 Launchpad 服务的辅助角色帐户数目。 有关详细信息,请参阅 SQL Server 机器学习 Services 中Scale 并发执行外部脚本

优化服务器执行脚本

SQL Server设置的默认设置旨在针对各种其他服务和应用程序优化服务器的平衡。

在默认设置下,机器学习(尤其是占用大量内存的操作)的资源有时会被限制或被阻止。

为了确保机器学习作业的优先级和资源适当,建议使用SQL Server Resource Governor来配置外部资源池。 你可能还需要更改分配给SQL Server数据库引擎的内存量,或增加在 SQL Server Launchpad 服务下运行的帐户数。

如果使用 Standard Edition 且没有Resource Governor,则可以使用动态管理视图、SQL Server扩展事件和Windows事件监视来帮助管理服务器资源。

安装其他Python和 R 包

为SQL Server创建的Python和 R 解决方案可以调用:

  • 基本函数。
  • 随SQL Server一起安装的专有包中的函数。
  • 与SQL Server安装的开源Python和 R 版本兼容的第三方包。

要从SQL Server使用的包必须安装在实例使用的默认库中。 如果在计算机上单独安装了 Python 或 R,或者将包安装到用户库中,则不能从 T-SQL 调用这些包。

若要安装和管理其他包,可以将用户组设置为共享每个数据库级别的包,或者通过配置数据库角色使用户能够安装自己的包。 有关详细信息,请参阅 安装新的 R 包。