我想在调用它时将几个变量传递到我的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?)'
答案 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);