Problem
When you have a SSIS package that contains a connection from a data source, this connection is not updated when the data source changes based on a configuration change.
Situation :
A SSIS solution contains 3 configurations : Development, Test, Production. You can create those configurations in configuration manager of the solution.
The SSIS project contains one Data source. It doesn't really matter what type but I take SQL Server. The database server in development is SQL_DEV, in test is SQL_TEST and in production is SQL_PROD. Initially they are for all configurations the same. You can specify those values by changing the active configuration and then editing the Data source.
In the SSIS package (DTSX), you can create a connection manager based on a Data source.
If you change the Data source, the connection manager is also changed. If you change the Data source by changing the active configuration, the connection manager is not being updated.
If you think this isn't a big issue think big. We have 4 configuration, 10 shared Data sources and 25 DTSX packages. That would give a maximum of 1000 settings (4 x 10 x 25). Using this method it can be reduced to 40 (4 x 10). Of course this is a theoretical but it is very common to have the destination data source re-used on all packages, which still would be 100 settings (4 x 25)
Steps to reproduce
- create a new SSIS project
- In the solution explorer, create a new Data source named TestSource.
- In the connection managers window of Package.dtsx, create a new connection from a Data source.
- Make some changes in to TestSource.ds under the Data Sources. For example change the server or the database.
- Verify that those changes are also in the package.
- in the solution explorer, right click the solution and select configuration manager
- under active solution configuration, create a new configuration named test.
- Set the copy settings from : development
- Verify that Create new project configuration is checked.
- click OK and close.
- Notice that the active configuration is now Test
- Make some changes the Testsource.ds like a different server.
- Verify that those changes are also in the package.
- Make the development configuration as active.
- Notice that the Testsource.ds contains now the original settings.
- You will notice that the connection manager still contains the "test" settings and not the development settings.
- If you create a deployment utility it will still contains the wrong values.
with regards,
Constantijn Enders
Don't use Data Sources. Just use the connection managers and use package configurations to configure them.
No comments:
Post a Comment