0

我正在编写一个自定义 SSIS 组件,在 Visual Studio 中运行时可以正常工作;但是,使用 dtexec.exe 或 dtexecui.exe 运行时会失败。

PreExecute当我建立从列名到 LineageID 的映射时,方法中发生了故障。这就是我感到困惑的地方,因为我在调试器中查看东西我所做的就是将我得到的值传递var foo = output.OutputColumnCollection[i].LineageIDbufferManager.FindColumnByLineageID(output.Buffer, foo)

在这一点上,我得到一个异常抛出的FindColumnByLineageID说法,

System.ArgumentException 未被用户代码处理 Message=Value 不在预期范围内。
Source=Microsoft.SqlServer.DTSPipelineWrap StackTrace:InnerException:

我很茫然。代码在 BIDS 中运行良好,此时的逻辑似乎还可以,真的没有什么可做的,我只是将一个值从 SSIS 传递回 SSIS。我的感觉是,有些设置或配置搞砸了,但我不知道此时会是什么。任何猜测将不胜感激。

谢谢!

4

3 回答 3

0

您的 Visual Studio 机器是 64 位环境吗?您可能想尝试运行 DTExec.exe 的 32 位版本,即 Program Files (x86) 中的那个。

尝试使用 64 位版本运行包时会出现相当问题。

于 2012-04-13T22:46:50.807 回答
0

您是否注册了自定义组件?

自定义 SSIS 组件(例如自定义任务或自定义转换)不会随部署实用程序一起移动。您必须手动移动和注册组件以使 SSIS 包能够访问它们。

于 2012-04-16T08:33:57.440 回答
0

一年多前,我承诺会对此进行跟进,对等待感到抱歉。时间的距离使一些细节褪色,但基本上我是个问题,因为组件实际上在两种环境中的接线方式不同。

在 BIDS 中运行时,会在组件图中添加一些在命令行案例中不存在的不可见组件。我怀疑这是为了提供对 GUI 更新的支持以及附加查看器的能力。

我试图变得聪明并从该图表中提取一些信息,并且由于隐藏在 BIDS 案例中的额外组件而幸运。(感觉就像是那些应该在堆上分配的东西在堆栈上分配的错误之一,而你的命运取决于堆栈的那部分何时会被踩到。)一旦我修复了我所做的错误假设然后组件图自行解决。

于 2013-09-27T19:46:02.050 回答