通过 .NET 应用程序访问 SSIS 包活动和变量






2.43/5 (4投票s)
2006 年 10 月 8 日
2分钟阅读

48041
本文将指导您如何使用 .NET 应用程序访问和更新 SSIS 包的属性和变量。
引言
大家好,
以下是一些通过 .NET 应用程序设置 SSIS 包中定义的变量的酷炫技巧。
正如我之前展示过的,如何使用 .NET 应用程序获取 SSIS 包列表并手动执行它们。开发者可能希望对 SSIS 包有比仅执行更多的控制,例如通过 .NET 应用程序禁用 SSIS 包中的特定活动,设置 SSIS 包的变量。如何实现这一点……?要了解答案,请继续关注我。
接下来的内容将回答以上问题,
1. 将以下程序集导入您的应用程序
System.Data.SqlTypes;
Microsoft.SqlServer.Dts.Runtime;
Microsoft.SqlServer.Management.Smo;
Microsoft.SqlServer.Management.Smo.Agent;
Microsoft.SqlServer.Management.Common;
System.Data.SqlClient;
2. 添加以下代码段,它将返回部署在 SQL Server 上的 SSIS 包集合
Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();
PackageInfos pInfos = app.GetPackageInfos("\\", ConfigurationSettings.AppSettings["ServerIp"].ToString(), "", "");
* ServerIp 是 SQL Server 的 IP 地址
3. 现在,我们将包信息(此处为 SSIS 包的名称)添加到下拉列表中,以便用户可以选择 SSIS 包并执行它。
foreach (PackageInfo pInfo in pInfos)
{
if (pInfo.Name != "Maintenance Plans")
ComboBoxJob.Items.Add(pInfo.Name);
}
4. 以下代码段向您展示如何执行包。此代码段将在用户单击屏幕截图所示的“执行”按钮时调用。
Microsoft.SqlServer.Dts.Runtime.Application app;
app = new Microsoft.SqlServer.Dts.Runtime.Application();
DTSExecResult pkgResults_Sql;
Package pkgIn = new Package();
pkgIn = app.LoadFromSqlServer("\\"+ComboBoxJob.SelectedItem. ToString().Trim(),ConfigurationSettings.AppSettings["ServerIp"].ToString(), "", "", null);
//此语句将“Test”变量设置为 12
pkg.Variables["Test"].Value = 12;
//此语句获取 SSIS 包中索引为 2 的活动,并允许您修改其属性。例如,我禁用了索引为 2 的活动,以便在执行此包时,索引为 2 的活动将不会运行。
TaskHost th=(TaskHost)pkgIn.Executables[2];
th.Disable =true;
pkgResults_Sql = pkgIn.Execute();
//消息框将显示成功/失败
MessageBox.Show(pkgResults_Sql.ToString());
5. 为了执行所有功能,用户必须在 MSDB 数据库上拥有相应的权限。