使用 SQL Server 机器学习服务中的绑定升级 Python 和 R 运行时

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

重要

2022 年 7 月 1 日终止对 机器学习 Server(以前称为 R Server)的支持。 有关详细信息,请参阅 机器学习 Server 将发生什么情况?

本文介绍如何使用称为“绑定”的 am 安装过程来升级 SQL Server 2016 R ServicesSQL Server 2017 机器学习服务中的 R 或 Python 运行时。 可以通过绑定 到 Microsoft 机器学习 Server 来获取更高版本的 Python 和 R

重要

本文介绍了一种用于升级 R 和 Python 运行时的旧方法,称为“绑定”。 如果已安装 SQL Server 2016 Services Pack (SP) 2 的累积更新 (CU) 14 或更高版本SQL Server 2017 的累积更新 (CU) 22 或更高版本,请改为参阅如何将默认 R 或 Python 语言运行时更改为更高版本

绑定是什么意思?

绑定是一个安装过程,它将 R_SERVICES 和 PYTHON_SERVICES 文件夹中的内容替换为 Microsoft 机器学习 Server 中较新的可执行文件、库和工具。

随服务模式提供的已上传组件已发生变化。 服务更新与新式生命周期中的 Microsoft R Server 和 机器学习 Server 的支持时间线保持一致。

除了组件版本和服务更新之外,绑定不会改变安装的基础:

  • Python 和 R 集成仍是数据库引擎实例的一部分。
  • 授权不变(没有与绑定相关的额外费用)。
  • SQL Server 支持策略仍适用于数据库引擎。

本文的其余部分将介绍绑定机制以及它如何用于 SQL Server 的每个版本。

注意

绑定只适用于绑定到 SQL Server 实例的数据库内实例。 在这种情况下,独立安装不一定需要绑定。

版本映射

下表是版本映射。 每个映射都显示跨发布的包版本。 当您绑定到 Microsoft 机器学习 Server(在 机器学习 Server 9.2.1 版本及之前被称为 R Server,并且从该版本开始添加了 Python 支持)时,您可以审阅升级路径。

绑定不保证 R 或 Anaconda 是最新版。 连接 Microsoft 机器学习 Server 时,R 或 Python 版本会通过安装程序进行安装,这些版本可能不是 Web 上提供的最新版本。

SQL Server 2017 机器学习服务

组件 初始版本 机器学习服务器 9.3 机器学习服务器 9.4.7
R 上的 Microsoft R Open (MRO) R 3.3.3 R 3.4.3 R 3.5.2
RevoScaleR 9.2 9.3 9.4.7
微软机器学习 9.2 9.3 9.4.7
sqlrutils 1.0 1.0 1.0
olapR 1.0 1.0 1.0
Python 3.5 上运行的 Anaconda 4.2 4.2/3.5.2 4.2/3.5.2
revoscalepy 9.2 9.3 9.4.7
微软 ML 9.2 9.3 9.4.7
预训练模型 9.2 9.3 9.4.7

组件升级的工作原理

如果你将现有 Python 和 R 安装绑定到 机器学习 Server,可执行文件、Python 和 R 库会升级。

如果你在具有 Python 或 R 集成的现有 SQL Server 数据库引擎实例上运行设置,绑定将由 Microsoft 机器学习 Server 安装程序执行。

安装程序会检测现有功能并提示你重新绑定到 机器学习 Server。

在绑定期间,C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\PYTHON_SERVICES 的内容被 C:\Program Files\Microsoft\ML Server\R_SERVER\PYTHON_SERVER 的较新可执行文件和库覆盖。

绑定只适用于 Python 和 R 功能。 用于 Python 和 R 的开放源代码包包括:

  • Anaconda
  • Microsoft R 开源
  • 专有包 RevoScaleR
  • Revoscalepy

绑定不会更改数据库引擎实例的支持模型或 SQL Server 的版本。

绑定是可逆操作。 通过取消绑定实例并修复 SQL Server 数据库引擎实例,可以还原为 SQL Server 服务。

使用安装程序绑定到 机器学习 Server

若要使用安装程序将 SQL Server 绑定到 Microsoft 机器学习 Server,请按照步骤操作。

  1. 在 SSMS 中,运行 SELECT @@version 以验证服务器是否满足最低版本要求。

    对于 SQL Server 2016 R Services,最低版本为 带有 CU3 的 Service Pack 1

  2. 检查 R 基础版本和 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) ))
    
  3. 关闭 SSMS 和任何与 SQL Server 具有开放连接的其他工具。 绑定将覆盖程序文件。 如果 SQL Server 有打开的会话,则绑定将失败,显示绑定错误代码 6。

  4. 将 Microsoft 机器学习 Server 下载到包含要升级的实例的计算机上。 我们推荐最新版本

  5. 解压缩文件夹并启动位于 MLSWIN93 下的 ServerSetup.exe。

  6. 在“配置安装”上,确认要升级的组件,并查看兼容实例的列表 。

  7. 在“许可协议”页面上,选择“我接受这些条款”以接受 机器学习 Server 的许可条款 。

  8. 在后续页面中,同意所选的任何开源组件(如 Microsoft R open 或 Python Anaconda 分发版)的其他许可条件。

  9. 在“即将完成”页面上,记下安装文件夹 。 默认文件夹为 \Program Files\Microsoft\ML Server。

    如果要更改安装文件夹,请选择“高级”以返回向导首页。 但是,必须重复前面的所有选择。

如果升级失败,请检查 SqlBindR 错误代码以获取详细信息。

脱机绑定(无互联网访问)

对于没有 Internet 连接的系统,可以将安装程序和 .cab 文件下载到已连接 Internet 的计算机上,然后将文件传输到独立服务器。

安装程序 (ServerSetup.exe) 包括 Microsoft 包(RevoScaleR、MicrosoftML、olapR、sqlRUtils)。 .cab 文件提供其他核心组件。 例如,“SRO”cab 提供了 R Open,这是 Microsoft 的开放源代码 R 分发版。

以下说明解释如何放置文件以进行脱机安装。

  1. 下载 MLSWIN93 安装程序。 它以单个压缩文件的形式下载。 我们推荐最新版本,但也可以安装早期版本

  2. 下载 .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
  3. 将 .zip 和 .cab 文件传输到目标服务器。

  4. 在服务器上,在 Run 命令中键入 %temp% 以获取临时目录的物理位置。 物理路径因计算机而异,但通常是 C:\Users\<your-user-name>\AppData\Local\Temp

  5. 将 .cab 文件放在 %temp% 文件夹中。

  6. 解压缩安装程序。

  7. 运行 ServerSetup.exe 并按照屏幕提示完成安装。

命令行操作

提示

找不到 SqlBindR? 可能尚未运行安装程序。 只有在运行 机器学习 Server 安装程序之后,SqlBindR 才可用。

  1. 以管理员身份打开命令提示符并导航到包含 sqlbindr.exe 的文件夹。 默认位置为 C:\Program Files\Microsoft\MLServer\Setup

  2. 键入以下命令,查看可用实例列表: SqlBindR.exe /list

    记下所列出的完整实例名称。 例如,对于默认实例,实例名称可能是 MSSQL14.MSSQLSERVER,或者类似于 SERVERNAME.MYNAMEDINSTANCE。

  3. 使用 /bind 参数运行 SqlBindR.exe 命令。 使用上一步中返回的实例名称,指定要升级的实例的名称。

    例如,若要升级默认实例,请键入:SqlBindR.exe /bind MSSQL14.MSSQLSERVER

  4. 在升级完成后,重启与已修改的任何实例关联的启动板服务。

还原或取消绑定实例

可以将绑定实例还原为 Python 和 R 组件的初始安装(由 SQL Server 安装程序建立)。 要还原到 SQL Server 服务,需执行三个步骤。

步骤 1:取消绑定

回滚绑定有以下两种方法:再次重新运行安装程序,或使用 SqlBindR 命令行实用工具。

通过设置取消绑定

  1. 找到 机器学习 Server 的安装程序。 如果已删除安装程序,可能需要重新下载它,或从另一台计算机复制它。
  2. 请确保在包含要取消绑定的实例的计算机上运行安装程序。
  3. 安装程序将识别出可能取消绑定的本地实例。
  4. 取消选中要还原为原始配置的实例旁边的复选框。
  5. 接受所有许可协议。
  6. 选择“完成” 。 此过程需要花费一点时间。

使用命令行取消绑定

  1. 如上节所述,打开命令提示符并导航到包含 sqlbindr.exe 的文件夹。

  2. 在使用 /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>]

参数

名称 说明
列表 显示当前计算机上所有 SQL Server 实例 ID 的列表
绑定 将指定 SQL Server 实例升级到最新版 R Server,并确保实例会自动获取 R Server 的未来升级
解除绑定 从指定 SQL Server 实例中卸载最新版 R Server,并防止未来 R Server 升级影响此实例

绑定错误

机器学习 Server 安装程序和 SqlBindR 都返回以下错误代码和消息。

错误代码 消息 详细信息
绑定错误 0 好的 (成功) 绑定操作已通过,无错误发生。
绑定错误 1 参数无效 语法错误。
绑定错误 2 操作无效 语法错误。
绑定错误 3 无效实例 实例存在,但对于绑定无效。
绑定错误 4 不可绑定
绑定错误 5 已绑定 已运行 bind 命令,但指定的实例已绑定。
绑定错误 6 绑定失败 取消绑定实例时出错。 如果在未选择任何功能的情况下运行 机器学习 Server 安装程序,可能会看到此错误消息。 绑定要求同时选择 MSSQL 实例、Python 和 R(假设实例为 SQL Server 2017)。 如果 SqlBindR 无法写入到“程序文件”文件夹,也会发生此错误。 打开 SQL Server 的会话或句柄将导致发生此错误。 如果出现此错误,请重启计算机并在启动任何新会话之前重新执行绑定步骤。
绑定错误 7 未绑定 数据库引擎实例具有 R 服务或 SQL Server 机器学习服务。 实例未绑定到 Microsoft 机器学习 Server。
绑定错误 8 解绑失败 取消绑定实例时出错。
绑定错误 9 未找到任何实例 在此计算机上找不到数据库引擎实例。

已知问题

本部分列出了使用 SqlBindR.exe 实用工具的已知问题以及可能影响 SQL Server 实例的 机器学习 Server 的升级问题。

还原以前安装的包

升级到 Microsoft R Server 9.0.1 后,SqlBindR.exe 无法还原原始包或 R 组件。 对实例使用 SQL Server 修复并应用所有的服务包。 重启实例。

更高版本的 SqlBindR 会自动还原原始 R 功能,无需重新安装 R 组件或重新修补服务器。 但是,必须安装在初始安装之后可能添加的任何 R 包更新。

使用 R 命令,通过数据库中的记录将已安装的包同步到文件系统。 有关详细信息,请参阅 SQL Server 的 R 包管理

SQL Server 中被覆盖的 sqlbinr.ini 文件出现问题

方案:将 机器学习 Server 9.4.7 绑定到 SQL Server 2017 时出现此问题。 当 Python 更新并需要绑定时,或者当你更新到新的 CU 时,系统无法识别 Python 已绑定,并会覆盖文件。 R 没有已知问题。

一种解决方法是在 PYTHON_SERVICES 目录中创建不为空的 sqlbindr.ini 文件。 内容不会影响文件的工作方式。

创建 sqlbindr.ini 文件(其中包含 9.4.7.82),保存到此位置:

C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES

从 SQL Server 进行多次升级时出现的问题

方案:先前已将 SQL Server 2016 R Services 的实例升级到 9.0.1。 执行了 Microsoft R Server 9.1.0 的新安装程序。 此安装程序列出了全部有效实例。 默认情况下,安装程序选择以前绑定的实例。 如果继续,下列已绑定的实例将被取消绑定。 因此,先前的 9.0.1 安装以及任何相关包会遭删除,但不会安装新版 Microsoft R Server (9.1.0)。

作为解决方案,可以修改现有的 R Server 安装,如下所示:

  1. 在“控制面板”中,打开“添加或删除程序” 。
  2. 找到 Microsoft R Server,然后选择“更改/修改”。
  3. 当安装程序启动时,选择要绑定到 9.1.0 的实例。

Microsoft 机器学习 Server 9.2.1 和 9.3 没有此问题。

绑定或取消绑定会留下多个临时文件夹

安装完成后,删除临时文件夹。

注意

请确保等待安装完成。 删除与某个版本关联的 R 库,然后添加新的 R 库可能需要很长时间。 操作完成后,将删除临时文件夹。

另请参阅