【问题标题】:How to use a SQL Server Integration Services (SSIS) custom Connection Manager programmatically?如何以编程方式使用 SQL Server Integration Services (SSIS) 自定义连接管理器?
【发布时间】:2021-06-28 14:52:42
【问题描述】:

我正在尝试从 C# 控制台应用程序以编程方式创建一个 SSIS 包,该应用程序使用 Kafka 的 3rd 方自定义连接管理器,如下所示:

static void Main(string[] args) 
{ 
    Application app = new Application(); 
    Package pkg = new Package(); 
    ConnectionManager cmKafka = pkg.Connections.Add("KAFKACS"); 
...

失败:

Microsoft.SqlServer.Dts.Runtime.DtsRuntimeException
为连接管理器...指定的连接类型“KAFKACS”不是 被识别为有效的连接管理器类型。

不过,将此管理器添加到 Visual Studio 2017 的集成服务项目中效果很好。

我是 SSIS、C# 和 Windows 开发的新手。到目前为止,这是我尝试过的:

  • 将 GAC 对 KAFKACS 程序集的引用添加到我的控制台应用程序中。
  • 强制 64 位执行导致 Microsoft.SqlServer.DTSRuntimeWrap 未找到。
  • 使用反射来尝试找出我引用的 Kafka DLL 的目标架构和 .NET 框架版本(看起来像 MSIL)。
  • 使用以前版本的 .NET 目标框架创建同一应用程序的版本。
  • 尝试手动创建 Kafka 管理器的实例,如下所示:
var rawKafka = new KafkaConnectionManager(); 
ConnectionManager cmKafka = (???) rawKafka; 
pkg.Connections.Join(cmKafka); 
  • 是否需要注册 KAFKACS 组件才能成功调用 Connections.Add
  • 错误消息是否具有误导性,并且我缺少其他我需要参考的可能是 Kafka 特定的程序集?
  • 我可以手动创建KafkaConnectionManager 的实例并将其与Connections.Join 一起使用吗?

【问题讨论】:

  • 最终目标是什么?使用 kafka 摄取数据?我总是对简单的解决方案就足够的复杂解决方案保持警惕。为什么不直接使用 C# 控制台应用程序来摄取 Kafka 数据?在我看来,SSIS 现在是一项古老的技术。
  • 嗨@Nick.McDermaid,目标是在SSIS、Kafka以及自定义管理器已广泛用于此类集成的项目中自动生成SSIS包。

标签: ssis visual-studio-2017


【解决方案1】:

为了回答我的问题,问题是第 3 方连接管理器是为 SQL Server 2017 (v14) 构建的,但控制台应用程序引用了 2016 (v13) 的 ManagedDTS 程序集。

调用pkg.Connections.Add("KAFKACS") 找不到DLL,因为第3 方安装程序已将它们安装在C:\Program Files (x86)\Microsoft SQL Server\140\DTS\Connections(其中140 对应于v14)而不是\130\DTS\Connections 中,而ManagedDTS 的v13 预计会找到它们.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 2011-07-03
    • 1970-01-01
    相关资源
    最近更新 更多