SSIS - Support of Multiple versions of our product
Our Enterprise Data warehouse consolidates data from multiple data sources. We have a requirement that we should be able to support data collection from different version of these data sources at the same time.
Ex. Customer has three different versions of our product installed 7.3, 7.3.1 and 7.3.2. The data warehouse would in this case would be on version 7.3.2, but should be able to collect data from prior versions of the data sources.
We use stored procedures to collect data from sources into our staging area and then we transform and load it on to the warehouse. The design of SSIS packages are that, there is one main package that executes packages for each table that we collect data
from the source. The main package is invoked per source that we need to collect data from, if there are three sources at run time there will be three instances of the main package running. These packages run on the warehouse machine to pull the data from the
source system.
We would like to maintain one version of these packages on the warehouse and support collecting data from different source versions.
Challenges
- The signature of stored procedures on the source system has changed between versions
- There are some additional fields returned by these stored procedures in the newer release
Example
7.3 version signature :[dbo].[PDW_GetMediaAgentSummary](@LastVersionIDASBIGINT,@InitializeDaysasINT= 60,@NextVersionIDASBIGINTOUTPUT)
7.3 Sp1 version signature: [dbo].[PDW_GetMediaAgentSummary](@LastVersionIDASBIGINT,@DataStartDateASDateTime2(3),@NextVersionIDASBIGINTOUTPUT)
Also, let us say in 7.3 this stored procedure returned 8 fields and 7.3 sp1 it is returning 10 fields.
The way we are trying to accommodate is to use “SQLCmd from variable” option in the OLE DB source to cover the signature difference, but this option does not allow us to bind parameters
to variables to get the output value. The second issue of additional fields (or the lack of additional fields from the 7.3 procedure), we tried to turned off the metadata validation, but we get field not found error at run time when we run the SSIS package
against 7.3 version. Looks like the only way we could solve is to duplicate the data flow tasks, based on the source version. Looking for better way to do this, since this could go out of control as the number of releases increases.
Appreciate help on this.