Depending upon the environment, our DB, OLAP, DTS, logging, and files used may be placed on a single box, all on separate boxes, or somewhere in between. I wish I could say that was an intentional design choice. We now have an ActiveX script as the first step in every package, immediately followed by any/all dynamic property tasks. Using stacenic's registry trick, we could eliminate even the dependence upon the INI file name/location and be completely dynamic.
Here is the ActiveX code and a sample INI file. Note we had to break the INI file into more sections than intended due to limitations on section length.
Hope this helps.
----------------------------------------------------
Function Main()
'Set the INI file name in all the dynamic properties tasks to the value from the global variable.
Dim gvINIFileName, oAssignments, oAssignment
gvINIFileName = DTSGlobalVariables("gvINIFileName").Value
set oAssignments = DTSGlobalVariables.Parent.Tasks("DTSTask_DTSDynamicPropertiesTask_1").CustomTask.Assignments
'Set all dynamic tasks that are INI File Type (see below) to point to the same file.
'DTSDynamicPropertiesSourceType_IniFile 0 Source is the value of a key within an .ini file.
'DTSDynamicPropertiesSourceType_Query 1 Source is a value returned by an SQL query.
'DTSDynamicPropertiesSourceType_GlobalVariable 2 Source is the value of a Data Transformation Services (DTS) global variable within the package.
'DTSDynamicPropertiesSourceType_EnvironmentVariable 3 Source is the value of a system environment variable.
'DTSDynamicPropertiesSourceType_Constant 4 Source is a constant.
'DTSDynamicPropertiesSourceType_DataFile 5 Source is the contents of a data file.
for each oAssignment in oAssignments
if oAssignment.SourceType = 0 then oAssignment.SourceIniFileFileName = gvINIFileName
next
set oAssignment = Nothing
set oAssignments = Nothing
Main = DTSTaskExecResult_Success
End Function
----------------------------------------------------------------------------------------------
[Logging]
LoggingServer=LoggingServerName
LoggingUsername=UserName
LoggingPassword=MindUrOwnBeezwax
[Connections]
DBServer=DBServerName
DBUserName=UserName2
DBPassword=MindUrOwnBeezwax2
[WorkFiles]
FileDir=\\FileServerName\ShareName\MyDir
HoldFileDir=\\FileServerName\ShareName\MyDir\Hold
ProcessedFileDir=\\FileServerName\ShareName\MyDir\Processed
[GlobalVariables]
gvMaxAge=100
gvPreFileNameFormat=PreYYMMDD.xls
gvPostFileNameFormat=PostYYMMDD.xls
[Dims]
' TK stands for TreeKey, used in OLAP processing
OLAPServer=CubeServer
TKFiscal=CubeServer\Inventory\DimFolder\Time.Fiscal
TKCalendar=CubeServer\Inventory\DimFolder\Time.Calendar
TKPromo=CubeServer\Inventory\DimFolder\Promotion
TKProduct=CubeServer\Inventory\DimFolder\Product
TKMarket=CubeServer\Inventory\DimFolder\Market
[Cube]
OLAPServer=CubeServer
TKItem=CubeServer\Inventory\CubeFolder\Sales
TKInventory=CubeServer\Inventory\CubeFolder\Inventory
TKVirtual=CubeServer\Inventory\CubeFolder\InventorySales
Larry