You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server调用Python读取远程共享Excel报文件不存在问题排查

问题1:FileNotFoundError(\6被转义为\x06)的解决方法

报错核心原因是两层字符串解析的转义冲突:写在@script参数里的Python代码会被原封不动传给Python运行时解析,而Python普通字符串默认将反斜杠\识别为转义字符,路径中\6符合Python八进制转义规则(反斜杠+0-7范围数字),被解析为ASCII控制符\x06,最终生成的路径完全错误,自然无法找到文件。

三种解决方法任选其一即可:

  • 方法1(最简便):给路径字符串加Python原始字符串标记r,让Python不处理反斜杠转义,修改后代码如下:
EXECUTE sp_execute_external_script
    @language = N'Python',
    @script = N'import pandas as pd
df = pd.read_excel(r"\\192.168.7.9\Import\6\strtinsertinput (4)-953aee07-ca14-4213-a91e-ab0b0f7f3db2.xlsx", sheet_name = "Sheet1")';
GO
  • 方法2:把路径里所有反斜杠替换为正斜杠,Python原生支持Windows平台下的正斜杠路径,完全不存在转义问题:
EXECUTE sp_execute_external_script
    @language = N'Python',
    @script = N'import pandas as pd
df = pd.read_excel("//192.168.7.9/Import/6/strtinsertinput (4)-953aee07-ca14-4213-a91e-ab0b0f7f3db2.xlsx", sheet_name = "Sheet1")';
GO
  • 方法3:在普通Python字符串里把所有反斜杠双写做转义,让Python解析后得到正确的单反斜杠路径,该写法冗余度高,不推荐使用:
EXECUTE sp_execute_external_script
    @language = N'Python',
    @script = N'import pandas as pd
df = pd.read_excel("\\\\192.168.7.9\\Import\\6\\strtinsertinput (4)-953aee07-ca14-4213-a91e-ab0b0f7f3db2.xlsx", sheet_name = "Sheet1")';
GO

转义问题修复后如果仍报权限错误,需要给SQL Server Launchpad服务的运行账号(或自定义配置的外部脚本代理账号)授予该共享路径的对应读/写权限。OPENROWSET能读取成功是因为它走SQL Server服务本身的权限体系,和外部脚本的运行权限不是同一套。

问题2:SQL Server内嵌Python是否支持读写远程服务器共享路径

完全支持,只需要满足两个前提:

  • 必须使用完整UNC路径(即\\服务器IP\共享名\文件路径格式),不要使用用户会话下映射的网络盘符(比如Z:\xxx.xlsx),服务运行的会话上下文不会保留用户手动映射的盘符配置。
  • 运行外部Python脚本的身份(SQL Server Launchpad服务账号/配置的外部脚本代理账号),对远程共享文件夹拥有对应的读写权限。

内容的提问来源于stack exchange,提问作者ahmed barbary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:09:56