如何解决SQL Server 2017中Python脚本无法运行的配置问题?
解决SQL Server 2017中无法运行Python脚本的问题
首先得说,你遇到的这个问题其实挺常见的——明明执行了启用外部脚本的配置命令,结果运行值还是0,导致Python脚本执行失败,甚至直接改系统表还被拦了。咱们一步步来拆解解决:
1. 务必重启SQL Server及Launchpad服务
很多人容易忽略:执行RECONFIGURE WITH OVERRIDE后,必须重启SQL Server实例服务和SQL Server Launchpad服务,配置才能真正生效。具体操作:
- 按下Win+R,输入
services.msc打开服务管理器。 - 找到你的SQL Server实例服务(比如默认的
MSSQLSERVER),右键选择「重启」。 - 再找到
SQL Server Launchpad服务,同样右键重启。 - 重启完成后,执行
exec sp_configure 'external scripts enabled',检查run_value是否变为1。
2. 重新安装/修复机器学习服务(Python组件)
从你描述的更新时Python安装失败来看,很大概率是当初安装SQL Server时没勾选Python组件,或者组件已经损坏。咱们重新添加这个功能:
- 打开SQL Server 2017安装中心,选择「安装」→「向现有SQL Server实例添加功能」。
- 跟着向导选择你的目标实例,在「功能选择」页面勾选「机器学习服务(In-Database)」,然后勾选「Python」选项。
- 安装过程中确保网络稳定(组件需要在线下载),如果之前下载失败,检查防火墙是否拦截了微软的下载地址,或者换个更稳定的网络环境。
- 安装完成后,再次执行以下命令:
然后重复第一步,重启SQL Server和Launchpad服务。EXEC sp_configure 'external scripts enabled', 1 RECONFIGURE WITH OVERRIDE
3. 绝对不要手动修改系统表
你尝试的update sys.configurations命令报错是正常的——微软明确禁止直接修改系统目录,这种操作不仅不被支持,还可能导致数据库损坏。所有配置变更都必须通过sp_configure和官方支持的方式来完成。
4. 升级SQL Server到最新累积更新(CU)
你的SQL Server 2017是CU14,确实比较老旧了,很多机器学习服务的Bug在后续CU中已经修复。建议升级到最新的CU,但注意:
- 升级前先确保机器学习服务已经正确安装(或者先卸载现有机器学习服务,升级SQL Server后再重新安装)。
- 升级过程中同样要保证网络通畅,避免组件下载失败。
5. 验证配置是否生效
完成以上步骤后,执行一个简单的测试脚本验证:
exec sp_execute_external_script @language =N'Python', @script=N'OutputDataSet = InputDataSet', @input_data_1 = N'SELECT 1 as col'
如果能正常返回结果(一行col=1的数据),说明配置已经成功了。
额外注意事项
- 你的Windows 10版本是17134(2018年春季更新),建议升级到最新的Win10版本(比如22H2),可以解决不少兼容性问题。
- 确保SQL Server服务账户和Launchpad服务账户(默认是
NT Service\MSSQLLaunchpad)有足够的权限访问Python安装目录(默认路径是C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES)。
内容的提问来源于stack exchange,提问作者AskMe




