SQL Server 2017,使用sp_execute_external_script(SQL Server机器学习)在数据库的上下文中运行python脚本。 python脚本需要从文件系统加载文件。一切(数据库和文件系统)都在我的PC上本地。错误跟踪:
Msg 39004,Niveau 16,État20,Ligne 1
Ur erreur de script«Python»执行产品«sp_execute_external_script»avec HRESULT 0x80004004。
Msg 39019,Niveau 16,État2,Ligne 1
最好的脚本产品:
执行错误。检查输出以获取更多信息。
回溯(最近通话最近一次):
文件“”,第
行第5行第43行的文件“ C:\ PROGRA〜1 \ MICROS〜3 \ MSSQL1〜2.MSS \ MSSQL \ EXTENS〜1 \ MSSQLSERVER201701 \ B2E71FC7-8E08-4D86-8B82-38AD564DBC9D \ sqlindb.py”
im = Image.open(adresse_image)
文件“ C:\ Program Files \ Microsoft SQL Server \ MSSQL14.MSSQLSERVER2017 \ PYTHON_SERVICES \ lib \ site-packages \ PIL \ Image.py”,行2410,处于打开状态
fp = builtins.open(filename, "rb")
PermissionError:[Errno 13]权限被拒绝:'C:\ Users \ aubertl \ Downloads \ plage_corse_2.jpg'
SqlSatelliteCall错误:执行错误。检查输出以获取更多信息。
标准脚本出没的STDOUT消息:
Express Edition将继续执行。
SqlSatelliteCall函数失败。请查看控制台输出以获取更多信息。
回溯(最近通话最近一次):
rx_sql_satellite_call中的第406行“ C:\ Program Files \ Microsoft SQL Server \ MSSQL14.MSSQLSERVER2017 \ PYTHON_SERVICES \ lib \ site-packages \ revoscalepy \ computecontext \ RxInSqlServer.py”,行406。
rx_native_call("SqlSatelliteCall", params)
rx_native_call中的第291行“ C:\ Program Files \ Microsoft SQL Server \ MSSQL14.MSSQLSERVER2017 \ PYTHON_SERVICES \ lib \ site-packages \ revoscalepy \ RxSerializable.py”
ret = px_call(functionname, params)
RuntimeError:revoscalepy函数失败。
答案 0 :(得分:2)
来自Grant all application packages permissions on file folder:
Properties
。Security
标签。Edit
按钮。Add...
以添加ALL APPLICATION PACKAGES
特权。Modify
和/或Full Control
,以允许Read/Write
进入此目录。还可以添加Everyone
以防止出现其他问题。
改编自StackOverflow answer,在Administator
命令提示符下运行:
icacls "X:\DataDir" /grant "ALL APPLICATION PACKAGES:(OI)(CI)F" /T
答案 1 :(得分:1)
默认情况下,python服务在“ NT Service \ MSSQLLaunchpad”下运行。文件位于“ C:\ Users \ aubertl”文件夹中,默认情况下,MSSQLLaunchpad无法访问该文件夹。
我建议创建另一个目录,例如C:\ PytrhonScripts“,并将对该文件夹的读取访问权限授予MSSQLLaunchpad。
答案 2 :(得分:0)
右键单击目录->授予访问权限->添加“所有人”。然后脚本运行并产生所需的输出。显然不能添加使用该服务运行的用户(NT Service \ MSSQLLaunchpad),因此这是一种解决方法。