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

适用于: SQL Server 2022 (16.x)

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

注意

这些说明特定于 Windows 上的 SQL Server 2022 (16.x)。 若要在 Windows 上为 SQL Server 2016 (13.x)、SQL Server 2017 (14.x) 或 SQL Server 2019 (15.x) 安装 SQL Server 机器学习服务,请参阅在 Windows 上安装 SQL Server 机器学习服务(Python 和 R)

对于 Linux,请参阅在 Linux 上安装 SQL Server 机器学习服务(Python 和 R)

预安装清单

  • 需要数据库引擎实例。 不能只安装 Python 或 R 功能,但可以将它们逐渐添加到现有实例。

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

  • SQL Server 2019 及更高版本中的 Always On 故障转移群集实例也支持安装机器学习服务。

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

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

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

重要

安装完成后,请务必完成本文中所述的配置后步骤。 这些步骤可能包括使 SQL Server 能够使用外部脚本。 配置更改通常需要重启实例或重启 Launchpad 服务。

获取安装介质

SQL Server 的下载位置由版本决定:

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

运行安装程序

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

如果在安装过程中遇到任何安装错误,请查看 Setup Bootstrap 日志文件夹中的摘要日志(例如 %ProgramFiles%\Microsoft SQL Server\160\Setup Bootstrap\Log\Summary.txt)。

  1. 启动 SQL Server 2022 安装向导。

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

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

    • 数据库引擎服务

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

    • 机器学习服务和语言

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

    此屏幕截图显示了安装 SQL Server 2022 (16.x) 机器学习服务时要检查的最低实例功能。

    Screenshot of feature selection showing check boxes next to Database Engine Services and Machine Learning Services and Language.

安装运行时和包

从 SQL Server 2022 (16.x) 起,R、Python 和 Java 的运行时不再随 SQL Server 安装程序一起提供或安装, 而是改为使用以下部分来安装自定义运行时和包。

设置 R 支持

安装 R 运行时

  1. 下载并安装最新版本的 R 4.2 for Windows

  2. 安装 CompatibilityAPIRevoScaleR 的依赖项。 在已安装版本的 R 终端中,运行以下命令:

    # R Terminal
    install.packages("iterators")
    install.packages("foreach")
    install.packages("R6")
    install.packages("jsonlite")
    
  3. 下载并安装最新版本的 CompatibilityAPIRevoScaleR 包:

    install.packages("https://aka.ms/sqlml/r4.2/windows/CompatibilityAPI_1.1.0.zip", repos=NULL)
    
    install.packages("https://aka.ms/sqlml/r4.2/windows/RevoScaleR_10.0.1.zip", repos=NULL)
    

使用 SQL Server 配置 R 运行时

  1. 使用 SQL Server 配置已安装的 R 运行时。 可以使用 RegisterRext.exe 命令行实用工具来更改默认版本。 该实用工具位于 R 应用程序文件夹中,具体取决于安装。 通常,它位于 %ProgramFiles%\R\R-4.2.3\library\RevoScaleR\rxLibs\x64

    你可使用以下脚本从 RegisterRext.exe 的安装文件夹位置配置已安装的 R 运行时。 SQL Server 默认实例的实例名称为 MSSQLSERVER,或者为 SQL Server 命名实例的实例名称。

    .\RegisterRext.exe /configure /rhome:"%ProgramFiles%\R\R-4.2.3" /instance:"MSSQLSERVER"
    

    如果要配置通常称为“.\SQLEXPRESS”或“MACHINENAME\SQLEXPRESS”的 SQL Server 命名实例,请仅包含实例名称。 例如:

    .\RegisterRext.exe /configure /rhome:"%ProgramFiles%\R\R-4.2.3" /instance:"SQLEXPRESS"
    
  2. 通过使用 SQL Server Management Studio (SSMS)Azure Data Studio,连接到安装 SQL Server 机器学习服务的实例。 选择“新建查询”打开查询窗口,然后运行以下命令以启用外部脚本功能:

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

    如果已为另一种语言启用了该功能,则无需为 R 再次运行 RECONFIGURE。基础扩展性平台支持这两种语言。 若要进行验证,请确认以下输出返回 config_valuerun_value1

    EXEC sp_configure  'external scripts enabled';
    
  3. 重启 SQL Server 服务。 重启服务也会自动重启相关的 SQL Server Launchpad 服务。

    可以使用右键单击 SSMS 对象资源管理器中实例的“重启”命令、使用“控制面板”中的“服务”项,或者使用 SQL Server 配置管理器来重启服务。

  4. 通过运行简单的 T-SQL 命令来验证安装以返回 R 的版本:

    EXEC sp_execute_external_script @script=N'print(R.version)',@language=N'R';
    GO
    

设置 Python 支持

安装 Python 运行时

  1. 下载 Python 3.10 for Windows 的最新版本。 使用以下选项安装该程序:

    1. 打开 Python 安装应用程序,然后选择“自定义安装”。

    2. 确认已选中“为所有用户安装启动器(推荐)”复选框。

    3. 对于“可选功能”,选择所需功能(或全选)。

    4. 在“高级选项”页上,选中“为所有用户安装”,接受其他默认选项,然后选择“安装”。

      建议使用所有用户都可以访问的 Python 安装路径(例如 C:\Program Files\Python310),而不是特定于单个用户的安装路径。

  2. 从新的提升的命令提示符下载并安装最新版本的 revoscalepy 包及其依赖项:

    cd "C:\Program Files\Python310\"
    python -m pip install -t "C:\Program Files\Python310\Lib\site-packages" dill numpy==1.22.0 pandas patsy python-dateutil
    python -m pip install -t "C:\Program Files\Python310\Lib\site-packages" https://aka.ms/sqlml/python3.10/windows/revoscalepy-10.0.1-py3-none-any.whl
    

    运行以下 icacls 命令以将对已安装的库的 READ 和 EXECUTE 访问权限授予 SQL Server Launchpad Service 和 SID S-1-15-2-1 (ALL_APPLICATION_PACKAGES)。 需要向与启动板服务关联的服务帐户授予权限,请检查SQL Server 配置管理器

    icacls "C:\Program Files\Python310\Lib\site-packages" /grant "NT Service\MSSQLLAUNCHPAD":(OI)(CI)RX /T
    icacls "C:\Program Files\Python310\Lib\site-packages" /grant *S-1-15-2-1:(OI)(CI)RX /T
    

    如果将 SQL Server 安装为命名实例,则服务帐户中间可能有一个 $,例如:

    icacls "C:\Program Files\Python310\Lib\site-packages" /grant "NT Service\MSSQLLAUNCHPAD$SQLEXPRESS":(OI)(CI)RX /T
    icacls "C:\Program Files\Python310\Lib\site-packages" /grant *S-1-15-2-1:(OI)(CI)RX /T
    

使用 SQL Server 配置 Python 运行时

  1. 使用 SQL Server 配置已安装的 Python 运行时。 可以使用 RegisterRext.exe 命令行实用工具来更改默认版本。 该实用工具位于自定义安装位置(例如 C:\Program Files\Python310\Lib\site-packages\revoscalepy\rxLibs)。

    从提升的命令提示符,可使用以下脚本从 RegisterRext.exe 的安装文件夹位置配置已安装的 Python 运行时。 SQL Server 默认实例的实例名称为 MSSQLSERVER,或者为 SQL Server 命名实例的实例名称。

    cd "C:\Program Files\Python310\Lib\site-packages\revoscalepy\rxLibs"
    .\RegisterRext.exe /configure /pythonhome:"C:\Program Files\Python310" /instance:"MSSQLSERVER"
    

    如果要配置通常称为“.\SQLEXPRESS”或“MACHINENAME\SQLEXPRESS”的 SQL Server 命名实例,请仅包含实例名称。 例如:

    cd "C:\Program Files\Python310\Lib\site-packages\revoscalepy\rxLibs"
    .\RegisterRext.exe /configure /pythonhome:"C:\Program Files\Python310" /instance:"SQLEXPRESS"
    
  2. 使用 SQL Server Management StudioAzure Data Studio,连接到安装 SQL Server 机器学习服务的实例。 选择“新建查询”打开查询窗口,然后运行以下命令以启用外部脚本功能:

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

    如果已为另一种语言启用了该功能,则无需为 R 再次运行 RECONFIGURE。基础扩展性平台支持这两种语言。 若要进行验证,请确认以下输出返回 config_valuerun_value1

    EXEC sp_configure  'external scripts enabled';
    
  3. 重启 SQL Server 服务。 重启服务也会自动重启相关的 SQL Server Launchpad 服务。

    可以使用右键单击 SSMS 对象资源管理器中实例的“重启”命令、使用“控制面板”中的“服务”项,或者使用 SQL Server 配置管理器来重启服务。

  4. 通过运行一个简单的命令来验证安装以返回 Python 的版本:

    EXEC sp_execute_external_script @script=N'import sys;print(sys.version)',@language=N'Python'
    GO
    

安装 Java

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

其他配置

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

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

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

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

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

建议的优化

现在所有工作已顺利进行,可能还需要优化服务器以支持机器学习,或安装预先训练的机器学习模型。

优化服务器执行脚本

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 使用这些包。

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

适用于 Python 和 R 运行时的独立 RevoScale 包

RevoScale 包也作为适用于 Python 和 R 运行时的独立包受支持。 若要为独立方案设置 Python 或 R 运行时,请分别按照安装 Python 运行时安装 R 运行时部分中的说明执行操作。

Python 开发人员可以通过以下教程了解如何将 Python 与 SQL Server 一起使用:

R 开发人员可以开始使用一些简单的示例,并了解 R 如何与 SQL Server 协同工作的基础知识。 有关下一步,请参阅以下链接: