从.net运行后获取SSIS包变量值

时间:2019-05-03 14:38:48

标签: c# .net ssis

我在目录中部署了一个ssis软件包,并且从Application C#调用它,我设法通过向其传递参数来执行我的软件包参数,但是在执行软件包后我无法获得变量的值< / p>

string targetServerName = "MyServer";
            string folderName = "MyFolder";
            string projectName = "MyProject";
            string packageName = "Package1.dtsx";

            string sqlConnectionString = "Data Source=" + targetServerName +
                ";Initial Catalog=master;Integrated Security=SSPI;";
            SqlConnection sqlConnection = new SqlConnection(sqlConnectionString);

            IntegrationServices integrationServices = new IntegrationServices(sqlConnection);

            Catalog catalog = integrationServices.Catalogs["SSISDB"];

            CatalogFolder folder = catalog.Folders[folderName];

            ProjectInfo project = folder.Projects[projectName];

            PackageInfo package = project.Packages[packageName];

            Collection<ExecutionValueParameterSet> executionValueParameterSet = new Collection<ExecutionValueParameterSet>();

            executionValueParameterSet.Add(new ExecutionValueParameterSet
            { ParameterName = "MyParam", ParameterValue = "Param Value", ObjectType = 30 });

2 个答案:

答案 0 :(得分:0)

我一贯处理此问题的方法是在数据库中创建一个执行日志/历史表,并在该表中存储要传递回应用程序的所有信息。

然后,在执行包之后,只需从表中选择最新行即可。

答案 1 :(得分:0)

SSISDB.CATALOG.EVENT_MESSAGES DMV将返回执行期间变量更改为的值,其中OPERATION_ID列是该包的特定执行实例的执行ID。为此,请确保将变量的RaiseChangedEvent属性设置为True。这可以在SSDT的“属性”窗口中完成(突出显示变量并按F4)。此后,将变量更改为的值将在此DMV的MESSAGE列中。另外,要查看执行期间的参数值,您可以查询SSISDB.CATALOG.EXECUTION_PARAMETER_VALUES,执行ID将是此DMV中的EXECUTION_ID列。