I have been scratching my head over this design for quite some time now and I think it is time to ask for help.
I have designed a SSIS package which uses a FELC to enumerate over an ADO recordset. Inside the FELC, I have a flat file source, a conditional split, an aggregate transform and a destination. For each enumeration, the source loads the same flat file and
use the enumerated values to split the table before aggregation.
For performance purpose, I would like to (1) retain the connection in the FELC to avoid creating it at each enumeration, (2) avoid fetching the same input table and (3) keep the table in memory for processing.
To retain the connection, I understand that I could use other sources such as OLEDB, ADO.NET or Excel with the option “RetainSameConnection”. However, these will not satisfy my constraints of processing in-memory or not to re-load the data at each enumeration.
To keep data in-memory I have found two potential solutions: send the flat file table to a recordset or to an in-memory table. Concerning the in-memory table with the OLEDB source, the connection would be retained. But I have not found a solution to avoid
fetching the table at each enumeration.
Concerning the recordset, I could send the flat file table to a recordset before the FELC and use the recordset as source with a script component within the FELC. It does look like the best solution.
My questions:
(1) Am I missing any potential solutions to satisfy my 3 constraints? I am flexible on the type of FELC, or even to another approach than a FELC as long as performance is high.
(2) Is there a way to avoid a source to be loaded at each enumeration in a FELC?
(3) If I use a script component and a recordset, can it satisfy my constraints of (a) retaining the connection and (b) avoid loading the data at each enumeration? If yes, how to achieve that in the script?
Many thanks in advance,