我正在使用 EzAPI 通过 .NET 创建 SSIS 包,但是当我将现有包加载为具有现有组件(序列容器和执行 SQL 任务等)的模板时,EzExec 集合为空,而 DTS Executables 集合有很多成员. 我需要引用其中一些现有组件作为我想通过 EzAPI 添加到包中的任务的父项和先例。
我是否在包的初始化中遗漏了一些东西,或者这甚至可能吗?
下面是我尝试删除布局信息的代码的编辑示例,这仍然不起作用,可执行文件的计数为 7,EzExexs 的计数为 0。
谢谢,安德鲁
public static EzPackage loadPackageTemplate(string templateLocation)
{
EzPackage ezPackage = new EzPackage();
try
{
StreamReader s = new StreamReader(templateLocation);
string templateContents = s.ReadToEnd();
s.Close();
templateContents = removeLayoutInformation(templateContents);
ezPackage.LoadFromXML(templateContents);
}
catch (Exception)
{
throw;
}
//need to remove layout from template
return ezPackage;
}
public static string removeLayoutInformation(string strXML)
{
try
{
//Remove the layout information.
while (strXML.IndexOf("<DTS:PackageVariable>") > -1)
{
strXML = strXML.Remove(strXML.IndexOf("<DTS:PackageVariable>"), strXML.IndexOf("</DTS:PackageVariable>") - strXML.IndexOf("<DTS:PackageVariable>") + 22);
}
}
catch (Exception)
{
throw;
}
return strXML;
}
public static EzExecutable GetExecutable(EzPackage ezPac, string identifier)
{
EzExecutable toReturn = null;
foreach (EzExecutable ezEx in ezPac.EzExecs)
{
if (ezEx.EzName == identifier)
{
toReturn = ezEx;
break;
}
}
return toReturn;
}
EzPackage pac = SSISGen.loadPackageTemplate(@"C:\Temp\SSISPackageTemplates\LoadFact.dtsx");