Ubuntu 20.04下SQL Server 2022运行Python外部脚本报错排查咨询
针对Ubuntu 20.04系统下SQL Server 2022执行Python外部脚本出现的Msg 39012错误,需按以下几点逐一排查:
确认SQL Server机器学习服务组件已安装
SQL Server 2022在Linux上无法直接使用系统Python,需单独安装扩展性组件。执行以下命令检查组件是否存在:dpkg -l | grep mssql-server-extensibility若未安装,通过apt安装对应组件:
sudo apt-get update sudo apt-get install mssql-server-extensibility启用外部脚本执行权限
登录SQL Server,执行以下命令开启外部脚本支持:sp_configure 'external scripts enabled', 1; RECONFIGURE WITH OVERRIDE;执行完成后重启SQL Server服务:
sudo systemctl restart mssql-server验证mssql-launchpad服务状态
外部脚本依赖mssql-launchpad服务,检查服务是否正常运行:sudo systemctl status mssql-launchpad若未启动,手动启动并设置开机自启:
sudo systemctl start mssql-launchpad sudo systemctl enable mssql-launchpad检查SQL Server关联的Python环境
SQL Server会使用自带的Python环境而非系统默认版本,需确认其版本兼容性及路径:
尝试执行最简Python脚本验证环境(若能执行):EXEC sp_execute_external_script @language = N'Python', @script = N' import sys print("Python版本:", sys.version) print("Python路径:", sys.executable) ';若无法执行,手动检查默认路径
/opt/mssql/mlservices/python/bin/下的Python版本是否为3.8(SQL Server 2022支持版本),且mssql用户对该路径有读写权限:sudo chown -R mssql:mssql /opt/mssql/mlservices/验证核心Python依赖包
SQL Server执行脚本依赖revoscalepy等核心包,进入SQL Server自带的Python环境验证:/opt/mssql/mlservices/python/bin/python3 -c "import revoscalepy; print('revoscalepy加载正常')"若报错,说明包缺失或损坏,需重新安装机器学习服务组件。
检查文件系统与临时目录权限
确保mssql用户对临时目录/tmp有读写权限,避免脚本执行时无法创建临时文件:sudo chmod 1777 /tmp查看详细日志定位问题
检查SQL Server和Launchpad的日志文件,获取更具体的错误原因:- SQL Server错误日志:
/var/opt/mssql/log/errorlog - Launchpad日志:
/var/opt/mssql/log/launchpadd.log
- SQL Server错误日志:
内容的提问来源于stack exchange,提问作者ZedZip

