如何在 SSIS 包中使用 C# 应用程序中的变量

本文关键字:应用程序 变量 SSIS 包中使 | 更新日期: 2023-09-27 18:33:40

我是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);
    }
}

PS:PROJ_ID 是在包中调用的主要变量,但我可能还需要项目根、名称和路径。

如果这是正确的,那么如何在 SSIS 包中定义和使用这些变量?如何在SSIS包中进一步进行?我可以猜到我必须编写脚本任务,但同样需要花费大量时间来学习和编写。如果您可以指导我并提供一些示例代码,那么它将非常有帮助。

提前谢谢。

维沙尔

如何在 SSIS 包中使用 C# 应用程序中的变量

我不

记得为什么,但我记得当我需要使用 C# 中的变量执行 SSIS 包时,以下是最终对我有用的方法:

  1. 创建调用 SSIS 包的作业。
  2. 创建一个包含包使用的变量值的表。 该表还必须包含某种"作业结果"列。
  3. 在包的开头包含一个步骤,该步骤从具有 JobResult 的 NULL 的表中的第一行读取其变量的值。
  4. 在包的末尾包含一个步骤,用于更新变量表中的 JobResult 列,其中包含"成功"、"失败"或任何您想要的内容,只要它不是 NULL。
  5. 在 C# 中,使用所需的变量值填充表,然后启动作业。

希望这有帮助。