在SSIS托管对象模型中使用参数覆盖

时间:2013-12-24 19:49:07

标签: c# sql-server ssis

我正在使用托管对象模型来执行我的SSIS 2012包。

我正在尝试使用PackageInfo.PropertyOverrideParameterSet覆盖SSIS 2012中自动公开的连接字符串参数。

SSIS PackageInfo类提供an overloaded Execute method,允许您传入要在运行时覆盖的参数。这似乎是设置连接字符串的绝佳机会。

要创建PackageInfo.PropertyOverrideParameterSet object,您需要指定要覆盖的参数的PropertyPath。

需要采用什么格式?

1 个答案:

答案 0 :(得分:2)

可以使用PackageInfo.ExecutionValueParameterSet而不是PackageInfo.PropertyOverrideParameterSet来设置连接字符串。连接字符串的ParameterName将遵循格式CM.<connectionManagerName>.ConnectionString(将<connectionManagerName>替换为您的连接管理器名称)。在下面的代码段中,我的连接管理器名为B540P.KB1)。

PackageInfo.ExecutionValueParameterSet evps = new PackageInfo.ExecutionValueParameterSet();
evps.ParameterName = @"CM.B540P.KB1.ConnectionString";
evps.ParameterValue = @"Data Source=B540P;Initial Catalog=AdventureWorks;Integrated Security=True;Application Name=SSIS-Package1-{19035BA0-C90C-47AA-8AF6-31B025779FF6}B540P.KB1;";
evps.ObjectType = 30;

System.Collections.ObjectModel.Collection<PackageInfo.ExecutionValueParameterSet> parms = new System.Collections.ObjectModel.Collection<PackageInfo.ExecutionValueParameterSet>();
parms.Add(evps);           

pkg.Execute(false, null, parms, null);

可以使用PackageInfo.PropertyOverrideParameterSet来设置连接字符串,但我不确定PropertyPath会是什么(请参阅下面的SQL Server链接以获取{{3}的示例对于SSIS变量)。

以下是通过不同方法与MOM交互的一些很好的信息: