You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS 2019自定义连接管理器识别失败问题求助

排查SSIS 2019自定义连接管理器32位模式识别错误

从你的描述来看,问题核心是自定义连接管理器在64位运行时正常,但32位模式下无法被识别,这通常和32位环境下的DLL部署、编译配置或注册问题有关。下面是几个针对性的排查方向:

1. 确认DLL的编译目标平台

SSIS 32位运行时只能加载x86编译的自定义组件,如果你之前的项目是用Any CPU或x64编译的,就会导致32位环境下加载失败:

  • 打开你的自定义连接管理器项目,右键属性 → 生成 → 目标平台,选择x86。
  • 重新编译生成DLL,替换掉之前部署到两个Connections目录的文件。

2. 验证32位GAC注册的有效性

虽然你用了32位gacutil,但要确保DLL真的被注册到32位GAC中:

  • 打开目录C:\Windows\Microsoft.NET\assembly\GAC_32,搜索你的DLL名称,确认存在对应的条目,且版本为15.0.0.0,公钥令牌和你项目设置一致。
  • 如果找不到,重新运行32位gacutil命令(注意要以管理员身份打开32位命令提示符,路径通常是C:\Windows\SysWOW64\cmd.exe):
    gacutil /i YourCustomConnectionManager.dll
    

3. 检查DtsConnectionAttribute的配置

连接类型名称不匹配是常见的报错原因,必须确保代码中的ConnectionType值和你在SSIS包中选择的类型名完全一致(大小写敏感):

[DtsConnection(
    DisplayName = "XXX Connection Manager",
    ConnectionType = "XXX", // 这里要和包中使用的连接类型名丝毫不差
    Description = "Custom connection manager for your service"
)]
public class XXXConnectionManager : ConnectionManagerBase
{
    // 你的组件逻辑
}

仔细检查是否有拼写错误、多余空格或大小写不一致的情况。

4. 清理32位DTS目录的旧文件

有时候旧版本的DLL会留在C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Connections目录中,导致Visual Studio加载错误版本:

  • 删除该目录下你的自定义DLL,重新复制最新编译的x86版本。
  • 完全重启Visual Studio,避免缓存影响。

5. 检查依赖项兼容性

用Dependency Walker(x86版本)打开你的32位DLL,检查是否有缺失的依赖项或者不兼容的.NET框架版本:

  • SSIS 2019基于.NET Framework 4.7.2,确保你的项目和所有依赖项都以这个版本为目标框架。
  • 如果有第三方依赖DLL,也要确保它们的x86版本被部署到32位环境的正确位置(比如和你的DLL同目录,或者注册到32位GAC)。

6. 启用SSIS诊断日志获取详细错误

为了定位更具体的问题,可以启用SSIS的诊断日志:

  • 在Visual Studio中打开你的SSIS包,右键 → 日志记录 → 添加日志提供程序(比如“SQL Server”或“文本文件”)。
  • 在“详细事件”选项卡中,勾选Diagnostic级别的事件,特别是OnError和OnInformation相关的条目。
  • 运行包后查看日志,里面会包含加载连接管理器时的具体错误信息(比如DLL加载失败、依赖缺失等),这会帮你快速定位问题。

内容的提问来源于stack exchange,提问作者user11890

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 16:15:58