This is a common problem: Use a dtsx package with dynamic database connection.
In fact there are times that you need to set connection string of database from outside of package.
solution:
Suppose that you have an OLE DB connection and set it to same database which you want to work with and named it "Connection ".
1-Use a Script Task
2-Create four variables for your connection string details
3-pass them as ReadOnlyVariables to Script Task
4- write code below on your main method:
Public Sub Main()
Dim oledbConnectionManager As ConnectionManager
oledbConnectionManager = Dts.Connections("Connection")
‘ ADDED TO MAKE oledb CONNECTION STRING DYNAMIC
Dim oServerName As String
Dim oUserName As String
Dim oInitialCatalog As String
Dim oPassword As String
oServerName = Dts.Variables("User::ServerName").Value.ToString()
oInitialCatalog = Dts.Variables("User::DatabaseName").Value.ToString()
oUserName = Dts.Variables("User::UID").Value.ToString()
oPassword = Dts.Variables("User::Pass").Value.ToString()
Dts.Connections("Connection").Properties("ServerName").SetValue(oledbConnectionManager, oServerName)
Dts.Connections("Connection").Properties("InitialCatalog").SetValue(oledbConnectionManager, oInitialCatalog)
Dts.Connections("Connection").Properties("UserName").SetValue(oledbConnectionManager, oUserName)
Dts.Connections("Connection").Properties("Password").SetValue(oledbConnectionManager, oPassword)
Dts.TaskResult = ScriptResults.Success
End Sub