Azure虚拟机SQL Server 2016 R服务运行时启动失败问题咨询
修复Azure VM中SQL Server 2016 R服务配额不足错误(0x80070718)
看起来你遇到的是SQL Server R服务因会话资源配额不足导致的启动失败问题,我之前在Azure VM环境里处理过类似案例,结合你修改网络配置的背景,给你一套针对性的排查修复步骤:
步骤1:检查终端服务会话配额组策略
错误码0x80070718对应的是Windows系统的会话资源配额不足,SQL Launchpad依赖终端服务会话来启动R runtime,网络配置变更可能意外触发了组策略的限制:
- 打开本地组策略编辑器(运行
gpedit.msc) - 导航到:
计算机配置 > 管理模板 > Windows组件 > 远程桌面服务 > 远程桌面会话主机 > 会话时间限制- 将「设置断开连接的会话的时间限制」设为未配置或从不
- 将「设置活动但空闲的远程桌面服务会话的时间限制」设为未配置或从不
- 再导航到:
计算机配置 > 管理模板 > Windows组件 > 远程桌面服务 > 远程桌面会话主机 > 连接- 确认「限制连接的数量」设为未配置,或者设置一个足够大的数值(至少5以上,满足R服务的会话需求)
步骤2:调整SQL Launchpad服务的权限与配额
SQL Launchpad服务账户需要足够的权限来分配会话资源:
- 打开服务管理器(运行
services.msc),找到SQL Server Launchpad (MSSQLSERVER)(命名实例会有对应后缀) - 右键选择「属性」→「登录」标签,确认登录账户为默认的
NT Service\SQLSERVERLaunchpad - 打开本地用户和组(运行
lusrmgr.msc),找到该账户:- 切换到「隶属于」标签,确保它加入了
Performance Log Users和SQLServerMSASUser$<你的VM名称>$MSSQLSERVER(默认实例)组
- 切换到「隶属于」标签,确保它加入了
- 打开本地安全策略(运行
secpol.msc),导航到本地策略 > 用户权限分配:- 确保
NT Service\SQLSERVERLaunchpad拥有「调整进程的内存配额」权限
- 确保
步骤3:验证R Runtime的配置与文件权限
确认R服务本身的配置和文件访问没有问题:
- 运行以下SQL命令,确保外部脚本已启用:
EXEC sp_configure 'external scripts enabled', 1; RECONFIGURE WITH OVERRIDE; - 找到R服务的默认安装路径(SQL 2016默认实例为
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES):- 右键该文件夹→「属性」→「安全」标签,确认
NT Service\SQLSERVERLaunchpad拥有读取和执行权限
- 右键该文件夹→「属性」→「安全」标签,确认
- 手动测试R启动:打开命令提示符,切换到
R_SERVICES\bin目录,运行R.exe,如果能正常进入R交互环境,说明R runtime本身无问题
步骤4:排查网络配置变更的影响
你修改的网络配置可能间接影响了服务运行:
- 检查VM防火墙规则:确保没有限制本地终端服务的loopback访问(SQL Launchpad使用本地会话,不需要外部3389端口,但防火墙如果拦截本地回环会导致会话创建失败)
- 检查VM资源规格:如果修改网络时同步调整了VM大小(比如降级),可能导致CPU/内存资源不足,建议在Azure Portal查看VM的CPU和内存使用率,若持续高负载,考虑升级VM规格
步骤5:重启服务并测试
完成以上配置后,按顺序重启相关服务:
SQL Server (MSSQLSERVER)SQL Server Launchpad (MSSQLSERVER)
然后再次运行你的测试脚本验证:
EXEC sp_execute_external_script @language = N'R' , @script = N' X<-3'
内容的提问来源于stack exchange,提问作者mzhasan
相关产品推荐
相关产品推荐

