通过BAT脚本触发SSIS包失败:错误0x80040154求助
SSIS包执行权限问题:创建者可运行,其他用户报错0x80040154
问题背景
在Visual Studio 2019中创建SSIS包,用于将Excel文件数据同步至数据库表。通过共享文件夹中的BAT脚本触发时,创建者可正常执行,但其他用户运行失败,报错信息如下:
Started: 10:03:02 AM Could not create DTS.Application because of error 0x80040154 Started: 10:03:02 AM Finished: 10:03:02 AM Elapsed: 0 seconds SSIS Package execution failed. Error code: 1
已确认配置:
- SSIS包已设置为仅32位运行
- 使用的是32位版本的DTExec.exe
触发用的BAT脚本内容:
@echo off set "SSISPackagePath=\\FDB\d\Dispatch\TEST\Dispatch.dtsx" set "DTExecPath=\\FDB\Binn\DTExec.exe" "%DTExecPath%" /F "%SSISPackagePath%" if %errorlevel% equ 0 ( echo SSIS Package executed successfully. timeout /t 15 /nobreak >nul exit ) else ( echo email xxxx at xxx@abc-group.com. Share the error screenshot. echo SSIS Package execution failed. Error code: %errorlevel%)
排查与解决步骤
1. 修复DTS.Application组件注册权限
错误0x80040154对应REGDB_E_CLASSNOTREG,核心原因是DTS.Application组件未正确注册或用户无访问权限:
- 以管理员身份打开32位命令提示符(路径:
C:\Windows\SysWOW64\cmd.exe) - 执行注册命令(SQL Server 2019对应版本号150,其他版本需调整路径):
regsvr32 "C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\DTSPipeline.dll" - 打开注册表编辑器,定位到
HKCR\CLSID\{10020200-EB1C-11CF-AE6E-00AA004A34D5}(DTS.Application的CLSID),确保问题用户对该注册表项拥有读取权限
2. 验证共享资源权限
- 确保问题用户对
\\FDB\d\Dispatch\TEST\文件夹拥有读取+执行权限,对Dispatch.dtsx文件拥有读取权限 - 检查
\\FDB\Binn\文件夹的NTFS权限和共享权限,确保用户能读取并执行DTExec.exe - 若数据源Excel文件在共享路径,同步给用户开放该文件的读取权限
3. 调整DTExec运行路径
建议使用本地安装的DTExec替代共享路径,避免跨权限问题:
- 32位DTExec默认路径为
C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\DTExec.exe,修改BAT脚本中的DTExecPath为该本地路径
4. 检查SSIS服务与数据库权限
- 若SSIS包依赖SSIS服务(如使用包存储),将问题用户添加到
SSISDB Users组,或分配对应的SSIS服务访问权限 - 确认用户拥有目标数据库的读写权限,能正常访问要写入的表
5. 手动测试定位问题
让问题用户以自身身份登录设备,手动执行以下命令,观察是否出现更详细的报错信息:
"C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\DTExec.exe" /F "\\FDB\d\Dispatch\TEST\Dispatch.dtsx"
内容的提问来源于stack exchange,提问作者prgmmr101
相关产品推荐
相关产品推荐

