我有一堆本地Python脚本,需要从本地执行。如果我尝试导入标准Python库(例如熊猫),就没有问题。当我试图导入位于C:/Users/amusaeva/PyCharmProjects/ARW/WorkforceModel文件夹中的名为Simulator.py的Python文件时,我会收到一个错误。
EXEC sp_execute_external_script @language =N'Python',
@script=N'
import sys
sys.path.insert(0, "C:/Users/amusaeva/PyCharmProjects/ARW/WorkforceModel")
import Simulator
'下面是运行此SQL脚本时收到的错误消息:
Msg 39004,16级,状态20,0行
在使用HRESULT0x80004004执行“sp_execute_external_script”时发生了“Python”脚本错误。
Msg 39019,16级,状态2,0行
发生了外部脚本错误:
在执行中出错。有关更多信息,请查看输出。回溯(最近一次调用):
文件"",第5行,在
文件"C:\ProgramData\MSSQLSERVER\Temp-PY\Appcontainer1\D4294516-2993-475D-9F61-DF7C5AF4FE69\sqlindb_0.py",第35行,在转换中
进口模拟器
ModuleNotFoundError:没有名为“模拟器”的模块
SqlSatelliteCall错误:执行中的错误。有关更多信息,请查看输出。
来自外部脚本的STDOUT消息:
SqlSatelliteCall函数失败。有关更多信息,请参见控制台输出。
回溯(最近一次调用):
文件"C:\Program \Microsoft Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES\lib\site-packages\revoscalepy\computecontext\RxInSqlServer.py",第605行,在rx_sql_satellite_call中
rx_native_call("SqlSatelliteCall",params)
文件"C:\Program \Microsoft Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES\lib\site-packages\revoscalepy\RxSerializable.py",第375行,在rx_native_call中
ret =px_call(函数名,params)
RuntimeError:恢复功能失败。
我知道在那个Simulator.py目录中肯定有一个名为WorkforceModel的Python脚本,我不认为我有任何语法错误,因为当我通过一个PS窗口运行Python中的确切三行时,这个模块就会被导入而没有问题。为什么我的存储过程看不到Python脚本?
发布于 2020-11-16 03:18:39
结果是我需要整理一些权限。我用这篇文章作为灵感:https://www.red-gate.com/simple-talk/sql/data-science-sql/sql-server-machine-learning-2019-working-with-security-changes/,下面是我遵循的具体步骤。应用程序容器是在Server设置期间创建的。它们是Windows本地目录中的对象,例如本地目录中的所有对象,它们都有一个唯一的SID来标识应用程序容器。
所有应用程序容器对象在本地目录中都有一个固定的SID,即S-1-15-2-1。可以使用应用程序icacls授予权限。
将命令提示符作为administrator.打开
icacls C:\Users\amusaeva\PyCharmProjects\ARW\WorkforceModel /grant *S-1-15-2-1:(OI)(CI)F /t
在此之后,我没有问题地运行我的代码(我唯一需要更改的是使用C:\\Users\\amusaeva\\PyCharmProjects\\ARW\\WorkforceModel的斜杠)。
https://stackoverflow.com/questions/64530962
复制相似问题