【发布时间】:2020-12-22 20:24:51
【问题描述】:
我正在尝试使用 SQL 机器学习服务和 Python 做一些有用的事情。
我正在尝试将外部 python 脚本包含到 SQL 代码中。目前我正在 SQL Server 2019 开发版上的 SQL Server Management Studio 上进行测试。
关注Niels Berglund,我正在做的优秀文章:
EXEC sp_execute_external_script
@language =N'Python',
@script=N'
import os
os.system("C:\TEMP\ml.py")
OutputDataSet = InputDataSet
print("Say Hello from SQL Server Management Studio")
',
@input_data_1 =N'SELECT 42'
WITH RESULT SETS (([TheAnswer] int not null));
GO
我的ml.py 脚本是这样的:
#!"C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES\python.exe"
print("Say Hello from the external script")
当我运行我的 T-SQL 脚本时,我得到了这个:
STDERR message(s) from external script:
Access Denied
STDOUT message(s) from external script:
Say Hello from SQL Management Studio
(1 row affected)
Completion time: 2020-12-23T08:51:59.9264251-05:00
我确保脚本具有我认为正确的权限:
我什至尝试将完全控制权分配给所有人。我在 SQL 或 Windows 事件查看器上都没有看到任何错误。
我尝试了os.system() 的以下变体,但没有成功:
os.system("\"C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES\Lib\cust\ml.py\"")
os.system("\"C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES\python.exe\" \"C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES\Lib\cust\ml.py\"")
os.system("python.exe \"C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES\Lib\cust\ml.py\"")
os.system("python.exe C:\TEMP\ml.py")
非常欢迎任何想法。
谢谢!
【问题讨论】:
-
我想我已经在 Niel 的帖子 (nielsberglund.com/2018/03/07/…) 中找到了我一直在寻找的答案。应该是
@script = N'source("/path/to/my/script/my_python_script.py")'; -
您使用的是什么版本的 SQL Server?这是我保存的关于这个主题的几个链接。我还没有走这条在 SQL Server 上使用 Python 的道路,但我即将走上这条路。 docs.microsoft.com/en-us/sql/machine-learning/…docs.microsoft.com/en-us/sql/machine-learning/…
-
感谢@JasonCook 的评论。我正在使用 SQL Server 2017。我接近解决方案,但我面临不同的问题。我正在更新问题以反映它。谢谢!
标签: python sql-server tsql machine-learning microsoft-machine-learning-server