SQL Server 2019中SSIS包执行失败:COM类工厂及IClassFactory错误求助
SQL Server 2019 SSIS包执行失败问题排查与解决方案
错误现象
错误1(SQL代理作业启动时)
检索CLSID为
{6E8597AE-3486-4838-A8E0-F5C683618DF4}的组件COM类工厂失败,错误码80070005(E_ACCESSDENIED),提示访问被拒绝。
错误2(SSIS目录手动启动时)
通过IClassFactory创建CLSID为
{6E8597AE-3486-4838-A8E0-F5C683618DF4}的COM组件实例失败,错误码c0010014与0x80070005。
已完成的排查步骤
- 尝试手动个人账号执行、SQL Server Agent调度执行两种方式
- 执行账号已拥有
ssis_admin权限,且可正常访问SSISDB - 分别以SQL Server 2019和2022为目标版本部署包,问题未解决
问题解答
1. 错误原因分析
CLSID {6E8597AE-3486-4838-A8E0-F5C683618DF4} 对应SSIS核心COM组件(关联Microsoft.SqlServer.IntegrationServices.Server.Runtime),出现访问拒绝和实例创建失败的核心原因如下:
- 执行账号对该CLSID对应的注册表项无读取权限
- SSIS组件安装不完整,注册表项丢失或损坏
- 系统权限限制(如UAC拦截、组策略禁止账号访问COM组件)
- 位数不兼容:包依赖32位组件,但执行环境强制使用64位模式运行
2. SQL Server 2019特定兼容性/配置问题
SQL Server 2019存在几个可能触发该问题的场景:
- 默认注册表权限缺失:在Server Core或组策略严格的服务器中,
ssis_admin组的默认权限未覆盖到SSIS COM组件的注册表项,导致账号无法读取组件信息 - .NET Framework依赖问题:SSIS 2019依赖.NET Framework 4.7.2,若系统.NET版本不匹配或损坏,会引发组件加载失败
- 早期版本Bug:SQL Server 2019初始版本存在SSIS COM组件注册的已知Bug,未安装最新累积更新(CU)可能触发权限问题
3. 额外排查与配置调整步骤
注册表权限修复
- 打开注册表编辑器(
regedit.exe),定位对应路径:- 64位系统:
HKEY_CLASSES_ROOT\CLSID\{6E8597AE-3486-4838-A8E0-F5C683618DF4} - 32位系统:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\CLSID\{6E8597AE-3486-4838-A8E0-F5C683618DF4}
- 64位系统:
- 右键该CLSID项,选择权限,添加执行账号(或
ssis_admin组),授予读取权限 - 同步检查
InprocServer32子项的权限,确保同样拥有读取权限
重新注册SSIS COM组件
以管理员身份打开命令提示符,执行以下命令:
cd "C:\Program Files\Microsoft SQL Server\150\DTS\Binn" regsvr32 dts.dll regsvr32 dtshost.dll
(注:路径中150为SQL Server 2019版本号,若安装路径不同需自行调整)
验证并修复.NET Framework
- 确认系统已安装.NET Framework 4.7.2或更高版本
- 执行
dotnet --info查看.NET状态,若存在损坏,使用.NET修复工具修复
安装SQL Server 2019最新累积更新
下载并安装SQL Server 2019的最新CU,修复已知的SSIS组件Bug
匹配执行环境位数
- 若包依赖32位驱动/组件,在SQL Agent作业步骤配置中勾选使用32位运行时
- 手动执行时,切换到SSDT的32位运行环境测试
检查系统权限限制
- 确认执行账号未被组策略限制访问COM组件
- 若服务器启用UAC,可尝试以管理员身份运行SSIS执行命令或SQL Agent服务(仅用于测试)
内容的提问来源于stack exchange,提问作者bealtis
相关产品推荐
相关产品推荐

