将用户参数传递给SSIS包

Kor*_*saR 2 c# ssis

这是我的问题.我有一个SSIS包,在输入上有一个名为SegmentID的参数.但我不能从c#代码传递它.我在寻找FOR2天,到目前为止,这是我想到了,这应该工作的解决方案,但不 - SSIS包在得到参数的阶段失败.我到底做错了什么?

        using (SqlConnection con = GetConnection())
        {
            var integrationServices = new IntegrationServices(con);

            if (integrationServices.Catalogs.Contains("SSISDB"))
            {
                var catalog = integrationServices.Catalogs["SSISDB"];

                if (catalog.Folders.Contains("PSO"))
                {
                    var folder = catalog.Folders["PSO"];

                    if (folder.Projects.Contains("PSO_SSIS"))
                    {
                        var project = folder.Projects["PSO_SSIS"];

                        project.Parameters["SegmentID"].Set(ParameterInfo.ParameterValueType.Literal, segmentID);

                        if (project.Packages.Contains("Main.dtsx"))
                        {
                            var package = project.Packages["Main.dtsx"];

                            long executionIdentifier = package.Execute(false, null);
                            return catalog.Executions[executionIdentifier];
                        }
                    }
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

Kor*_*saR 7

谢谢,伙计们,但我想通了.你必须做这样的事情:

var setValueParameters = new Collection<PackageInfo.ExecutionValueParameterSet>();
                            setValueParameters.Add(new PackageInfo.ExecutionValueParameterSet
                            {
                                ObjectType = 20,
                                ParameterName = "SegmentID",
                                ParameterValue = 1
                            });
Run Code Online (Sandbox Code Playgroud)

然后打电话:

long executionIdentifier = package.Execute(false, null, setValueParameters);
Run Code Online (Sandbox Code Playgroud)

为什么它让我如此困惑的是,我认为这个东西只是用于系统参数,比如日志级别或者其他东西,并且NOWHERE被提到用户参数的代码是20,并且这种结构可以用于分配它们.希望它能帮助有人避免我用了2天的butthurt.