将变量传递给SSIS包C#

时间:2016-12-14 15:14:57

标签: c# ssis

我想在调用它时将几个变量传递到我的SSIS包中,但我似乎无法获得正确的语法来使它工作。

Microsoft.SqlServer.Dts.Runtime.Wrapper.Application app = new Microsoft.SqlServer.Dts.Runtime.Wrapper.Application();

Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSPackage100 pkg = app.LoadPackage(pkgLocation, false, null);

所以上面的位有效但是当我去添加变量时它不起作用:

pkg.Variables["mode"].Value = "test";

我得到的错误:

'IDTSPackage100' does not contain a definition for 'Variables' and no extension method 'Variables' accepting a first argument of type 'IDTSPackage100' could be found (are you missing a using directive or an assembly reference?)'

1 个答案:

答案 0 :(得分:2)

钟,

您使用包装程序集的任何原因? IDTSPackage100接口不包含Variables属性。但是,Microsoft.SqlServer.Dts.Runtime命名空间中的Package类包含Variables属性。

因此,使用Microsoft.SqlServer.Dts.Runtime命名空间(在Microsoft.SqlServer.ManagedDTS程序集中找到)而不是包装命名空间/程序集中的Application和Package类,您应该能够访问Variables属性。 / p>

更新: 如果您仍想使用包装器命名空间,可以将IDTSPackage100对象强制转换为IDTSContainer100对象,然后从那里访问变量。

IDTSContainer100 container = (IDTSContainer100)pkg;
container.Variables["User::mode"].Value = "test";

更新2: Execute method上的呼叫将如下所示:

pkg.Execute(null, container.Variables, null, null, null);