如何将变量从C#传递到SSIS包

时间:2019-05-15 08:49:48

标签: c# asp.net ssis

我正在尝试使用ASP.NET构建执行SSIS包的应用程序,因此我想将应用程序中的变量传递给此包。 我想知道SSIS中是否缺少某些配置。

var a = demande_provision_creance.Année;
var t = demande_provision_creance.Trimestre;
var e = demande_provision_creance.Etat;
var i = demande_provision_creance.ID;


db.SaveChanges();


try
{


    String pkgLocation = @"C:\PROVISION_CREANCES.dtsx";

    Application app = new Application();

    Package ssisPackage = null;

    ssisPackage = app.LoadPackage(pkgLocation, null);

    Microsoft.SqlServer.Dts.Runtime.Variables vars = ssisPackage.Variables;

    vars["User::Annee"].Value = a;
    vars["User::trimestre"].Value = t;
    vars["User::etat"].Value = e;
    vars["User::id_demande"].Value = i;


    Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = ssisPackage.Execute(null, vars, null, null, null);


    if (results == Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure)
    {
        foreach (Microsoft.SqlServer.Dts.Runtime.DtsError local_DtsError in ssisPackage.Errors)
        {
            x += string.Concat("Package Execution results: {0}", local_DtsError.Description.ToString());
        }
    }

}
catch (DtsException ex)
{
    // Exception = ex.Message;
}
return Json(x, JsonRequestBehavior.AllowGet);

1 个答案:

答案 0 :(得分:0)

您快到了,不需要在变量名称旁边提供变量范围:

vars["Annee"].Value = a;
vars["trimestre"].Value = t;
vars["etat"].Value = e;
vars["id_demande"].Value = i;

提供范围是在脚本组件或脚本任务中使用的,但不是在以编程方式使用程序包时使用的。