Вот моя проблема. У меня есть пакет SSIS, который принимает 1 параметр на входе, называемом SegmentID. Но я не могу передать его из кода C#. Я нахожусь за 2 дня до сих пор, и вот решение, которое я придумал, которое должно работать, но не делает - пакет SSIS выходит из строя на этапе получения параметра. Какого черта я делаю неправильно?Передача пользовательских параметров в пакет 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];
}
}
}
}
}
Существует несколько различных способов работы с параметрами в модели проекта 2012 года. Вы пытаетесь настроить параметр Project как segmentId или конкретный экземпляр идентификатора сегмента выполнения? – billinkc
Не уверен (это было какое-то время, когда я не играл с SSIS), я думаю, что вы даете параметр проекту, а не пакету. Итак, 'project.Parameters' ... должен быть' package.Parameters', нет? – kerrubin
Ну, на самом деле пакет написан другим человеком, я просто должен его запустить. Я попытался передать этот параметр, чтобы упаковать A LOT, но не удалось. В режиме отладки я увидел, что этот параметр на самом деле соответствует проекту, а не пакету (по какой-то причине). Сам пакет начинается с задачи, которая выглядит следующим образом: select * from где SegmentID =? –
KorsaR