Мне удалось решить эту проблему, сделав небольшую модификацию метода LinkInputToOutput в EzComponent.Вот до / после:
До:
if (InputColumnExists(inputIndex, colName))
return; // return as this column is already linked
IDTSInput100 input = m_meta.InputCollection[inputIndex];
IDTSVirtualInput100 virtualInput = input.GetVirtualInput();
IDTSVirtualInputColumn100 virtualInputColumn = virtualInput.VirtualInputColumnCollection[colName];
m_comp.SetUsageType(input.ID, virtualInput, virtualInputColumn.LineageID, DTSUsageType.UT_READONLY);
После:
IDTSInput100 input = m_meta.InputCollection[inputIndex];
IDTSVirtualInput100 virtualInput = input.GetVirtualInput();
IDTSVirtualInputColumn100 virtualInputColumn = virtualInput.VirtualInputColumnCollection[colName];
if (InputColumnExists(inputIndex, colName))
m_comp.SetUsageType(input.ID, virtualInput, virtualInputColumn.LineageID, DTSUsageType.UT_IGNORED);
m_comp.SetUsageType(input.ID, virtualInput, virtualInputColumn.LineageID, DTSUsageType.UT_READONLY);
Вам все еще нужно вручную связать столбцы, которые существуют в обоихисходные компоненты, такие как:
mergeJoin.LinkInputToOutput(0, "KeyField");