Database Journal
MS SQL Oracle DB2 Access MySQL PostgreSQL Sybase PHP SQL Etc SQL Scripts & Samples Links Database Forum

» Database Journal Home
» Database Articles
» Database Tutorials
MS SQL
Oracle
DB2
MS Access
MySQL
» RESOURCES
Database Tools
SQL Scripts & Samples
Links
» Database Forum
» Sitemap
Free Newsletters:
DatabaseDaily  
News Via RSS Feed


follow us on Twitter
Database Journal |DBA Support |SQLCourse |SQLCourse2
 

Featured Database Articles

MS SQL

Posted Oct 31, 2005

Setting DTS Package Properties at Runtime - Page 2

By Gregory A. Larsen

Using An ".ini" File

To use an ".ini" file for setting my DTS package parameters I will first need to build an ".ini" file. What I normally do is have a single ".ini" file for all my packages on a given server. Then inside the ".ini" file, I define a different section for each package. Here is the section definition from inside my ".ini" file for the simple package I am using in this article:

[Dynamic Parameters]
OUTFILE_DATASOURCE=c:\temp\SERVER1AuthorFile.txt
SERVER_DATASOURCE=SERVER1

As you can see, I have a key defined for each data source. Now since I plan to migrate this package to different servers I will have a different ".ini" file on each server. Therefore, by having a different ".ini" file on each server, I can change the key settings to map my DTS parameters to the appropriate place for any given server. This allows me an easy way to move packages from one server to another without having to modify my DTS package.

I will need to add two dynamic parameters for each Data Source parameter, one for each of my connections. To set my DTS package parameters I will use the "Add" button on the "Dynamic Properties Task Properties" screen, then select the appropriate Data Source value parameter, and click on the "Set button." This brings up the "Add/Edit Assignment" screen. On this script, I can browse the system for my ".ini" file by clicking on the "…" button. Once I have found and selected the appropriate ".ini" file, I then can select the correct "Section," and "Key" values using the pulldown menus. After I have set the "Source Information" to the correct key, I click on the "OK" button to assign the selected key to my DTS package parameter. Below are two screen shots that show how I set the "Source information" for each one of my connection Data Source properties.

Setting for SERVER Data Source:

Setting for AuthorFile Data Source:

Once I have made both of my dynamic properties assignments, my Dynamic Properties window looks like below:

To finalize the setting of my dynamic parameters all I need to do is click on the "OK" button. One of the benefits of using an ".ini" file is the fact that you change the DTS parameters by just changing the keys in the ".ini", without changing the DTS package itself.

Using a Query

I can use the dynamic properties task to set my DTS package properties with a T-SQL Query. You identify the specific DTS parameter you want to set, then when adding the parameter assignment, you specify "Query" for the "Source." After doing this the "Add/Edit Assignment" screen will allow you to identify the "Connection" and "Query" values. Here is a screen shot that shows how I set my AuthorFile DTS parameter:

In the "Connection" item, a connection needs to be identified that points to the server where the "Query" will be executed. In my case, I want to query the server identified in the "SERVER" connection. In the above example, I set the AuthorFile connection by selecting some information from a table that contains different parameters. To do this I built a SELECT statement that will get the appropriate DTS parameter from the "dba.dbo.dtsparm" table. To verify that I entered the correct SELECT statement, I clicked on the "Refresh" button to preview the value that will be selected. In my case, this is "c:\temp\Server1_Author.txt." Keep in mind that you may have some problems using the query method in setting your "Connection" item. This problem occurs if you do not have a connection defined that connects your DTS package to the server that is available from where you run the DTS package.

This method of replacing DTS package parameters works well, if you have a table on each of your servers where the DTS package will live, that is used to hold all your dynamic parameters. Plus, you have defined a connection for the "Local machine" that is used for the "Connection" information.

Using Global Variables

Another method to dynamically set DTS package parameters at run time is using global variables. To use this method I identify the DTS package parameters I want to set using a global variable, just like the other methods, by browsing through the list of package parameters then clicking on the "Set" button. When the "Add/Set Assignment" menu is displayed, I select "Global Variable" from the "Source" pulldown. After doing that, the following screen is displayed on my machine:

Since I do not have any global variables defined for my package, there are no variables identified in the "Variable" pulldown display. To create and associate a global variable with my selected DTS package parameter, I click on the "Create Global Variable" button. This allows me to create my global variable. Below I have created a global variable "AuthorFile", and set it to "c:\temp\Server1_Authorfile.txt".

When I click on the "OK" button I am taken back to the "Add/Edit Assignment" screen, where I can associate the global variable I just created with my "AuthorFile" DTS package parameter. Below I used the "Variable" pull down to select my newly created global variable, and then clicked on the "Refresh" button to preview the currently assigned value for the global variable.

One of the big advantages of using global variables is the "dtsrun" utility allows you to change the values of the global variables, when the utility runs the DTS package. The assignment of global variables is done by using the "/A" arguments on the "dtsrun" utility. So if you have SQL Agent jobs or batch scripts that issue the "dtsrun" command on your different servers, then you can set these global variables appropriately on each server using the "/A" arguments. This allows you an easy method of changing the DTS package parameters for each server in which you run the package.



MS SQL Archives

Comment and Contribute

 


(Maximum characters: 1200). You have characters left.

 

 




Latest Forum Threads
MS SQL Forum
Topic By Replies Updated
SQL 2005: SSIS: Error using SQL Server credentials poverty 3 August 17th, 07:43 AM
Need help changing table contents nkawtg 1 August 17th, 03:02 AM
SQL Server Memory confifuration bhosalenarayan 2 August 14th, 05:33 AM
SQL Server Primary Key and a Unique Key katty.jonh 2 July 25th, 10:36 AM