2

我遇到了一个奇怪的BIML问题。我正在使用 BIML 创建 SSIS 包,并且包中的脚本任务很少。它们是非常简单的脚本任务,下面是一个示例。

string filePath = Dts.Variables["User::SrcFile"].Value.ToString();
string folderName = Path.GetDirectoryName(filePath);
Dts.Variables["User::Error_File"].Value = folderName + "\\Errors\\" + "LoadErr.csv";

BIML 可以很好地生成包,但是脚本任务只有在我在设计器中打开脚本任务时才有效,单击编辑脚本然后关闭而不进行任何更改。如果我立即运行该软件包,则会引发以下错误。

无法将“System.__ComObject”类型的 COM 对象转换为接口类型“Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSVa​​riables100”</p>

在编辑器中打开和关闭脚本任务修复了我无法理解的问题。我有大约 50 个包,每个包有 4 个脚本任务,所以我无法打开每个包中的每个脚本任务以使其工作。

我将 Visual Studio Prof 2015 与 BIMLExpress 版本 5.0.61915.0 和 .NET 框架 4.7 一起使用。这个问题已经占据了我一天的大部分时间,没有任何可能的解决方案。

另一个有趣的事情是我在临时 PC 上安装了 SSDT 2015(VS 2015 Shell),它在那里工作正常,不幸的是我不能使用第二台 PC 进行开发。我已经比较了这两个包,我发现唯一的区别是BinaryItem元素的值。

为了进一步测试这一点,我将脚本任务保持在最低限度,问题是由使用 Dts.Variables 引起的。我不明白是什么导致了这种奇怪的行为。任何帮助是极大的赞赏。提前致谢。小号

4

0 回答 0