2
這是我的問題。我有一個SSIS包,它在輸入SegmentID上帶有1個參數。但我不能從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或執行的segmentID的特定實例? – billinkc
不知道(這是一段時間我不玩SSIS),我想你給參數的項目,而不是包。所以,'project.Parameters' ...應該是'package.Parameters',不是? – kerrubin
嗯,實際上這個軟件包是由另一個人編寫的,我只是想推出它。我嘗試將此參數傳遞給A LOT,但失敗。在調試模式下,我看到,這個參數實際上是打到Project,而不是打包(出於某種原因)。程序包本身以一個如下所示的任務開始:select * from where SegmentID =? –
KorsaR