SSIS执行进程任务调用WinRAR解压文件夹报退出码异常错误
SSIS执行进程任务调用WinRAR解压报错解决方案
报错根因
两个阶段的报错由两个叠加问题导致:
- 调用
WinRAR.exe阶段返回退出码1、弹窗提示Unknown Option ""、No Archives Found:核心是参数传递格式错误。将解压命令、压缩包路径、参数整串写入Arguments属性时,路径中包含Section 5 - Project 3这类带空格的目录名,未给路径整体包裹英文双引号,WinRAR解析参数时会按空格拆分字符串,把完整的压缩包路径拆成多个无效片段,既无法识别到压缩包文件,还会将拆分产生的空值判定为无效参数。 - 替换为
Rar.exe阶段返回退出码7:存在两个触发点,第一是Rar.exe是WinRAR自带的仅支持RAR格式处理的命令行工具,本身不支持ZIP格式压缩包的解压操作;第二是此前参数未处理空格的问题没有修正,命令行参数解析失败也会返回该退出码。
分步解决方法
- 修正可执行文件选择:解压ZIP包不要使用
Rar.exe,换回WinRAR.exe即可,注意匹配系统版本:64位系统默认路径为C:\Program Files\WinRAR\WinRAR.exe,32位WinRAR安装在C:\Program Files (x86)\WinRAR\WinRAR.exe,路径不要写错。 - 正确配置任务属性:在Execute Process Task编辑器中,
Executable栏单独填写WinRAR.exe的完整路径,不要把WinRAR路径写到Arguments参数栏;WorkingDirectory(工作目录)建议设置为WinRAR的安装目录,避免长路径解析冲突。 - 规范Arguments参数格式:所有带空格的路径必须用英文双引号包裹,参考格式如下:
说明:命令e "C:\Users\josh\Desktop\T-SQL_SQL Server\SSIS_RealWorld_Course_Udemy\Section 5 - Project 3\SharedFolder\Data20220703.zip" -o+ "C:\Users\josh\Desktop\T-SQL_SQL Server\SSIS_RealWorld_Course_Udemy\Section 5 - Project 3\Processed\"e代表解压后不保留压缩包内的目录结构,如果需要保留原有目录结构,把e替换为x即可;-o+代表自动覆盖已存在文件不提示;目标路径末尾要加反斜杠,避免引号转义问题。 - 前置命令行验证:配置SSIS任务前,先打开CMD手动拼接完整命令执行,确认可以正常解压后再把参数复制到SSIS任务中,提前排除路径拼写、参数格式问题,测试命令参考:
"C:\Program Files\WinRAR\WinRAR.exe" e "C:\Users\josh\Desktop\T-SQL_SQL Server\SSIS_RealWorld_Course_Udemy\Section 5 - Project 3\SharedFolder\Data20220703.zip" -o+ "C:\Users\josh\Desktop\T-SQL_SQL Server\SSIS_RealWorld_Course_Udemy\Section 5 - Project 3\Processed\" - 权限校验:如果手动执行CMD命令正常,但SSIS中运行失败,检查SSIS任务的运行账号(尤其是部署到SQL Server代理作业时的代理账号)是否拥有压缩包目录的读取权限、解压目标目录的写入权限,权限不足也会返回非0退出码。
WinRAR命令行常用退出码参考:
- 0:操作成功
- 1:非致命警告(如文件已存在等)
- 2:发生致命错误
- 7:命令行参数错误
内容的提问来源于stack exchange,提问作者JTD2021
相关产品推荐
相关产品推荐

