SQL Server Agent运行含Python脚本的SSIS包失败如何解决
故障根因排查
- UI会话缺失问题:SQL Server Agent属于Windows后台服务,默认运行在非交互式会话中,没有桌面图形环境,你当前的Chrome配置是启动带界面的浏览器,无法在无UI的后台会话中初始化,直接抛出异常导致进程退出码为1,这是该场景下最常见的故障原因。
- 账号权限问题:本地Visual Studio运行时使用的是当前登录的Windows账号,而SQL Agent作业的执行账号(错误日志中显示为
DESKTOP-3SDAFD\4664656)可能没有以下权限:- C:\Python\Python392目录的执行权限
- C:\Script、C:\DownloadFolder目录的读写权限
- Chrome浏览器、chromedriver.exe的执行权限
- 依赖包作用域问题:如果selenium、pandas等第三方包是当前用户通过pip用户级安装(路径在当前用户的AppData目录下),SQL Agent执行账号没有权限访问这些包,会触发导入错误。
- 路径转义错误:代码中chromedriver路径写为
"C:\Script\chromedriver.exe",Python中单斜杠为转义字符,部分场景下会解析错误,导致找不到驱动文件。
解决方案
- 修改Chrome适配后台运行的配置,添加无头运行参数,删除无UI场景下无效的最大化参数,同时修复路径转义问题,参考修改后的代码段:
option = webdriver.ChromeOptions() prefs = {"download.default_directory" : "C:\\DownloadFolder\\"} option.add_experimental_option("prefs",prefs) # 新增以下后台运行适配参数 option.add_argument("--headless=new") # Chrome 112+版本使用该参数,旧版本用--headless=chrome option.add_argument("--disable-gpu") option.add_argument("--no-sandbox") option.add_argument("--disable-dev-shm-usage") # 修复路径转义问题,添加r前缀标记为原始字符串 chromedriver = r"C:\Script\chromedriver.exe" driver = webdriver.Chrome(executable_path=chromedriver, options=option)
- 配置权限:右键点击C:\Python、C:\Script、C:\DownloadFolder三个目录,依次打开【属性】-【安全】,给执行账号
DESKTOP-3SDAFD\4664656授予完全控制权限。如果SQL Agent服务使用的是默认内置账号,可修改为你本地能正常运行脚本的Windows账号。 - 全局安装Python依赖:打开管理员权限的CMD,执行以下命令全局安装所有依赖,确保所有用户都能访问:
pip install --upgrade selenium pandas beautifulsoup4 - 增加日志排查能力:在脚本开头添加日志重定向代码,把运行时的输出和错误写入文件,方便定位具体问题:
import sys sys.stderr = open(r'C:\Script\python_err.log', 'a', encoding='utf-8') sys.stdout = open(r'C:\Script\python_out.log', 'a', encoding='utf-8')
作业执行失败后查看两个日志文件即可拿到Python层面的具体报错信息。
内容的提问来源于stack exchange,提问作者Zayfaya83
相关产品推荐
相关产品推荐

