我是VC#和SSIS的新手。但这是我的方案,我有来自单个SQL数据库中多个项目的数据,即多项目模式(一个SQL数据库存储来自多个项目的数据)。该数据基于proj_ID字段分离。我正在尝试创建C#应用程序,它将其proj_id拉入其中一个组合框字段,并在单击“导出数据”按钮后在项目上运行SSIS包。现在我想在SSIS包中使用这个项目id,这样包数据流只能在该项目上执行。
我在C#代码中添加了这个,但不确定这是否正确:
public void button2_Click(object sender, EventArgs e)
{
//Start the SSIS Here
try
{
Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();
Package package = null;
package = app.LoadPackage(@"C:\SSIS_Projects\XXX_Project\XXXX_Project\Package.dtsx", null);
Microsoft.SqlServer.Dts.Runtime.Variables myVars = package.Variables;
myVars["projectroot"].Value = projectroot;
myVars["path8"].Value =path8;
myVars["PROJ_NAME"].Value = comboBox1.ValueMember;
myVars["PROJ_ID"].Value = comboBox2.ValueMember;
//Excute Package
// working Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = package.Execute();
Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = package.Execute(null, myVars, null, null, null);
if (results == Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure)
{
foreach (Microsoft.SqlServer.Dts.Runtime.DtsError local_DtsError in package.Errors)
{
Console.WriteLine("Package Execution results: {0}", local_DtsError.Description.ToString());
Console.WriteLine();
}
}
}
catch (DtsException ex)
{
throw new FileNotFoundException("[Package.dtsx not found in directory]", ex);
}
}
P.S:PROJ_ID是调用包中的主要变量,但我可能还需要projectroot,名称和路径。
如果这是正确的,那么如何在SSIS包中定义和使用这些变量? 如何进一步深入SSIS包?我猜我必须编写脚本任务,但是我需要花费大量的时间来学习和编写。如果您可以指导我并提供一些示例代码,那么它将非常有用。
提前致谢。
维沙尔
答案 0 :(得分:0)
我不记得为什么,但我确实记得当我需要使用C#中的变量执行SSIS包时,这个方法最终对我有用:
希望这有帮助。