安装最新Visual Studio(SSDT)-BIDS后创建SSIS包报错0x80040154
先明确你的问题场景:
TITLE: Microsoft Visual Studio
Error creating package
Failed to save package file "C:\Users\userid\AppData\Local\Temp\tmp9ABC.tmp" with error 0x80040154 "Class not registered"
你提到已经试过2008年针对MSXML的解决方案但无效,这很正常——毕竟现在的SSDT环境和十几年前差异很大,下面是针对最新版SSDT的几个有效排查方向:
核对SSDT与SQL Server版本兼容性
最新版SSDT并非适配所有SQL Server版本,比如SQL Server 2019对应SSDT 16.x系列,SQL Server 2022则需要SSDT 17.x。如果你的SSDT版本和SQL Server不匹配,很容易出现组件注册异常。建议卸载当前SSDT,安装对应SQL Server版本的SSDT工具(可以通过Visual Studio Installer选择对应的数据工作负载)。重新注册SSIS核心COM组件
0x80040154本质是COM组件未注册,除了MSXML,SSIS自身的组件也可能因为安装异常未注册。以管理员身份打开命令提示符,切换到你的SQL Server DTS目录(比如SQL Server 2019是C:\Program Files\Microsoft SQL Server\150\DTS\Binn,版本号对应你的SQL Server:2017是140,2022是160),依次执行以下命令:regsvr32 dts.dll regsvr32 dtsconn.dll regsvr32 dtspkg.dll regsvr32 dtspump.dll regsvr32 dtsui.dll regsvr32 dtswiz.dll每个命令执行后会弹出注册成功的提示,全部完成后重启Visual Studio重试。
修复Visual Studio/SSDT安装
安装过程中可能出现组件损坏或缺失,最简单的方法是用Visual Studio Installer修复:- 打开Visual Studio Installer,找到你正在使用的VS实例
- 点击「修改」,然后选择「修复」选项
- 等待修复完成后,重启VS再尝试新建SSIS包
检查临时文件夹权限
错误提示提到临时文件无法保存,说明当前用户对C:\Users\userid\AppData\Local\Temp文件夹的读写权限可能不足:- 右键Temp文件夹,选择「属性」>「安全」标签
- 找到当前用户,确认是否有「读取和写入」权限,没有的话点击「编辑」添加该权限
- 应用设置后重启VS重试
排查第三方扩展干扰
某些VS扩展可能和SSIS工具链冲突,你可以尝试以安全模式启动VS:devenv.exe /SafeMode在安全模式下如果能正常创建包,说明是某个扩展的问题,逐个禁用最近安装的扩展,找到冲突的那个卸载即可。
内容的提问来源于stack exchange,提问作者Jeremy Thompson

