<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://denster.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fdenster.spaces.live.com%2fcategory%2fIntegration%2bservices%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Denny Lee's Windows Live Space: Integration services</title><description /><link>http://denster.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catIntegration%2bservices</link><language>en-US</language><pubDate>Sat, 16 Aug 2008 04:21:23 GMT</pubDate><lastBuildDate>Sat, 16 Aug 2008 04:21:23 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://denster.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>1323305814572094295</live:id><live:alias>denster</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>SSIS Processing Tips: Bulk Insert many files to a database</title><link>http://denster.spaces.live.com/Blog/cns!125D53A08EC75357!1210.entry</link><description>&lt;p&gt;
&lt;p&gt;In the process of building a set of SSIS packages that would process an immense amount of data, below are some learnings that have been determined in the process. The context of these tips is to build a set of packages that would bulk insert many files into a SQL database. 
&lt;p&gt;&lt;b&gt;&lt;u&gt;For Each Loop&lt;/u&gt;&lt;/b&gt; 
&lt;p&gt;In order to bulk insert many files from the file system to a database, one of the nice options included within SSIS is the inclusion of the “Foreach Loop” Container. An obvious selection would be to use the “Foreach File Enumerator”. After all, it allows you to “link” to a directory, loop through all of the files within that folder, and perform whatever process (e.g. bulk insert the data in those files) that needs to be performed. 
&lt;p&gt;&lt;img height=401 src="http://tk3.storage.msn.com/x1pWGh1LWVMb5_Rnm-BdT9BVgsgihx2cgY0w0bV_zk03yV4RvrO56BRo6B2G8tzw5wehbUBQccMaszJuqTlT5M72FtzK2-6UwYHC0KVjC1dY5pG_rvl44Dq2koLprZLJwvDGjVrLF0qHPy78qGBQ88czA" width=487&gt; 
&lt;p&gt;This particular enumerator &lt;u&gt;may&lt;/u&gt; have some issues when new files are constantly being added to the folder being executed against. Note, I do emphasize may here because some of the empirical tests executed were inconclusive on this last statement.  Note, if you want to use the ForEach enumerator anyways, please do refer to Jamie Thomson's blog at: &lt;a href="http://blogs.conchango.com/jamiethomson/archive/2006/10/13/SSIS_3A00_-Expressions-on-ForEach-enumerators.aspx"&gt;http://blogs.conchango.com/jamiethomson/archive/2006/10/13/SSIS_3A00_-Expressions-on-ForEach-enumerators.aspx&lt;/a&gt; (Thanks to Jamie for correcting this blog as well! &lt;img src="http://shared.live.com/VIf!VWmJbs6tK-ObyYk28Q/emoticons/smile_regular.gif"&gt;) 
&lt;p&gt;To resolve this, one should use the “Foreach from Variable Enumerator” which will then allow you to dynamically note which file location at run-time and add a checkpoint if there are files streamlining into that file location. Saying this below is a partial screenshot of a SSIS package of how to bulk insert multiples files into a SQL database. 
&lt;p&gt;&lt;b&gt;&lt;/b&gt;  
&lt;p&gt;&lt;b&gt;&lt;u&gt;File Loop Package&lt;/u&gt;&lt;/b&gt; 
&lt;p&gt;As you can see from the graphic below, the basic objects needed for this package are the “Get Item FileList” task, Foreach Loop container, Update BulkFile Connection task, Bulk Insert Task, the two connections noted within the “Connection Managers” 
&lt;p&gt;&lt;img height=469 src="http://tk3.storage.msn.com/x1pWGh1LWVMb5_Rnm-BdT9BVgsgihx2cgY0w0bV_zk03yX2Jbc2BV4ldEyEvn0tLjdvv_84KMg7CEd0lFX3ANcm68eETN4O9vGg05iVxrcFAkaagX25YwX9nOTSCDPbRSNU9NHWV2GzxJotxklXKpvrlA" width=264&gt; 
&lt;p&gt;and the four global variables noted in the graphic below 
&lt;p&gt;&lt;b&gt;&lt;/b&gt;  
&lt;p&gt;&lt;b&gt;&lt;u&gt;Global Variables&lt;/u&gt;&lt;/b&gt; 
&lt;p&gt;The reason for using global variables is because this allows one to either input the values of these variables at run-time and/or obtain these values from a metadata repository (e.g. registry, database, configuration file, etc.). This will allow a degree of flexibility especially when running the system on an enterprise environment and/or mix environments. 
&lt;p&gt;The four global variables needed for this package are: 
&lt;p&gt;&lt;img height=117 src="http://tk3.storage.msn.com/x1pWGh1LWVMb5_Rnm-BdT9BVgsgihx2cgY0w0bV_zk03yUMzxHW4c_FiwAUHkLNQKyO3mFWurlO-XOFpXqVFsS-U6nQ5Ez4m3iBxyhP2NcI1pcIExR7t5pEdmGft3PVDlcQYVLLCa0MbirgmgnJN1DVvw" width=558&gt; 
&lt;p&gt;&lt;b&gt;ConnString&lt;/b&gt;: This string variable allows one to enter the connection string of the SQL database to be connected. Note, the connection within the connection manager itself may already be connected to your desired database and then you may not need this variable. But, just in case you want the ability to do this, you can create a global variable which contains the connection string text within it. Later in this article you will see how to modify the connection manager to use this variable. 
&lt;p&gt;&lt;b&gt;FileDir&lt;/b&gt;: This string variable contains the directory location containing the files one wants to process. Because this is variable, one can build an additional script task (not included in this article) which can obtain the file directory from metadata. 
&lt;p&gt;&lt;b&gt;FileList&lt;/b&gt;: This is object variable which will be used to store the list of files found within the specified directory. The above noted “Get Item FileList” task list (more details below) performs the task of populating this variable and the “ForEach Loop” container will extract the list of files from this variable. 
&lt;p&gt;&lt;b&gt;FileName&lt;/b&gt;: This string variable is used by the “Foreach Loop” container. As you can see from the Foreach Loop dialog below in the Foreach Loop Container section, notice the Variable User::FileList. 
&lt;p&gt;&lt;b&gt;&lt;/b&gt;  
&lt;p&gt;&lt;b&gt;&lt;u&gt;Changing Connection Manager via Expressions&lt;/u&gt;&lt;/b&gt; 
&lt;p&gt;As noted above, the ConnString variable was created so one can dynamically create a connection string at run-time. Note, an important thing about using global variable connection strings is that it is important to provide a valid database connection string right at run-time (e.g. via command line parameter and/or configuration). If the connection string is invalid (blank, etc.), SSIS will automatically validate the connection to an invalid database and thus the package will immediately fail. 
&lt;p&gt;&lt;b&gt;&lt;img height=438 src="http://tk3.storage.msn.com/x1pWGh1LWVMb5_Rnm-BdT9BVgsgihx2cgY0w0bV_zk03yXiTj77pRcjZlwo8p2BB-gbllBnk7qt4Pk1dFqLUemRIiC2zt8FD6bpXUab4i2XVs3bVAGSzbfQ446SGCzwFekj9pXnaO4kXz9YleTwK2eilg" width=287&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt; 
&lt;p&gt;Presuming you are comfortable with these constraints, then you can update the properties DbConnection (within the Connection Managers) by adding an “Expressions property” as per above. Specifically, the “ConnectionString Expressions property” can be pointed to a global variable (in this case, the ConnString variable) such that this database connection can be dynamically generated at run-time. 
&lt;p&gt;&lt;b&gt;&lt;/b&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;  
&lt;p&gt;&lt;b&gt;&lt;u&gt;Get Item FileList&lt;/u&gt;&lt;/b&gt; 
&lt;p&gt;As alluded to above, the “Get Item FileList” script task will perform the task of retrieving the file list from the directory specified in the “FileDir” global variable. It will then populate the “FileList” object global variable with the full list of files. By initially setting the ScriptTask of “ReadOnlyVariables” with “FileDir” and “ReadWriteVariables” with “FileList”, the Visual Basic .NET script code-below will perform the task of updating the “FileList” global variable. 
&lt;p&gt;&lt;font face="Courier New" color="#0000ff"&gt;Imports System&lt;br&gt;Imports System.Data&lt;br&gt;Imports System.Math&lt;br&gt;Imports Microsoft.SqlServer.Dts.Runtime&lt;br&gt;Imports System.Collections&lt;br&gt;Imports System.IO &lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New" color="#0000ff"&gt;Public Class ScriptMain &lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New" color="#0000ff"&gt;Private listForEnumerator As ArrayList &lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New" color="#0000ff"&gt;   Public Sub Main() &lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New" color="#0000ff"&gt;      ' Declarations&lt;br&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;Dim directoryName As String&lt;br&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;Dim localFiles() As String&lt;br&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;Dim localFile As String&lt;br&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;Dim fileFilter As String &lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;' Looking for files with the naming convention of &amp;quot;MyFiles*.csv&amp;quot;&lt;br&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;fileFilter = &amp;quot;MyFiles*.csv&amp;quot; &lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;' Create an array list that will contain the files.&lt;br&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;listForEnumerator = New ArrayList() &lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;' Try/Catch&lt;br&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;Try&lt;br&gt;&lt;font face="Courier New"&gt;         &lt;/font&gt;' Obtain directory name that contains the files from the &lt;br&gt;&lt;font face="Courier New"&gt;         &lt;/font&gt;' global variable &amp;quot;FileDir&amp;quot;&lt;br&gt;&lt;font face="Courier New"&gt;         &lt;/font&gt;directoryName = Dts.Variables.Item(&amp;quot;FileDir&amp;quot;).Value.ToString() &lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;     &lt;/font&gt;    ' Create the array of local files which allows you to filter for &lt;br&gt;&lt;font face="Courier New"&gt;     &lt;/font&gt;    ' file names of only &amp;quot;MyFiles*.csv&amp;quot; as specified in the above&lt;br&gt;&lt;font face="Courier New"&gt;     &lt;/font&gt;    ' fileFilter&lt;br&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;     &lt;/font&gt;    localFiles = Directory.GetFiles(directoryName, fileFilter) &lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;     &lt;/font&gt;    ' Additional logic can be added in the for loop below &lt;br&gt;&lt;font face="Courier New"&gt;     &lt;/font&gt;    ' e.g. based on ModifiedDateTime, additional name filters, etc.&lt;br&gt;&lt;font face="Courier New"&gt;     &lt;/font&gt;    For Each localFile In localFiles&lt;br&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;listForEnumerator.Add(localFile)&lt;br&gt;&lt;font face="Courier New"&gt;     &lt;/font&gt;    Next &lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;Catch &lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;      &lt;/font&gt;End Try &lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New" color="#0000ff"&gt;   ' Transfer the array of files to the &amp;quot;FileList&amp;quot; object variable&lt;br&gt;   Dts.Variables(&amp;quot;FileList&amp;quot;).Value = listForEnumerator &lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New" color="#0000ff"&gt;   ' Success&lt;br&gt;   Dts.TaskResult = Dts.Results.Success&lt;br&gt;End Sub &lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;End Class&lt;/font&gt; &lt;/font&gt;
&lt;p&gt;The above code has comments that explains the code. Note, some of this code has been copied from the SSIS samples that can be found at &lt;a href="http://msdn.microsoft.com/"&gt;http://msdn.microsoft.com/&lt;/a&gt;. 
&lt;p&gt;&lt;b&gt;&lt;/b&gt;  
&lt;p&gt;&lt;b&gt;&lt;u&gt;Foreach Loop Container&lt;/u&gt;&lt;/b&gt; 
&lt;p&gt;As noted in the beginning of this article, the Foreach Loop Container should be using the “Foreach From Variable Enumerator” pointing to the “FileList” global variable. Within the “Variable Mappings” of the “Foreach Loop Editor”, set the Variable to point to the “User::FileName” variable with an Index of 0. Therefore, the tasks within this container (“Update BulkFile Connection” task and the “Bulk Insert task”) will reference the “FileName” global variable and loop through the entire “FileList” array until complete. 
&lt;p&gt;&lt;img height=443 src="http://tk3.storage.msn.com/x1pWGh1LWVMb5_Rnm-BdT9BVgsgihx2cgY0w0bV_zk03yX4pqchFJ-O0UuJAeLiSzrUR23fHEMr0x-AchYtAjwYJbZIDmrwnfGkJXmtFJVa16ZJsaq1GzoN6C3sKY4HwghbDnqnbEn5jyyXF1fyg-X4gw" width=524 border=0&gt; 
&lt;p&gt;&lt;b&gt;&lt;/b&gt;  
&lt;p&gt;&lt;b&gt;&lt;u&gt;Update BulkFile Connection&lt;/u&gt;&lt;/b&gt; 
&lt;p&gt;For the database connection (DbConnection) within the connection manager, to dynamically change the connection string we used a global variable and an expression to evaluate that global variable. But for the BulkFile connection, we are using some code instead. The BulkFile connection is a file connection to a specific file. But the problem with trying to process many files is that you will need to update the BulkFikle connection to be constantly updated so that it is pointing to a new file. 
&lt;p&gt;Since the “Update BulkFile Connection” script task is within the “Foreach Loop” container, this script task will have access to the “FileName” global variable that will be updated with a new file name for each loop. Therefore, the script task will need to make use of it, and then update the BulkFile connection manager to point to this new file. 
&lt;p&gt;To do this, make sure to: 
&lt;p&gt;1) The &amp;quot;Update BulkFile Connection&amp;quot; script task has Script -&amp;gt; ReadOnlyVaribles pointing to the &amp;quot;FileName&amp;quot; global variable. 
&lt;p&gt;2) The VB.NET Script code within this script task is quite simple and noted below 
&lt;p&gt;&lt;font face="Courier New" color="#0000ff"&gt;Imports System&lt;br&gt;Imports System.Data&lt;br&gt;Imports System.Math&lt;br&gt;Imports Microsoft.SqlServer.Dts.Runtime &lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New" color="#0000ff"&gt;Public Class ScriptMain &lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New" color="#0000ff"&gt;   Public Sub Main()&lt;br&gt;   &lt;font face="Courier New"&gt;   &lt;/font&gt;' &lt;br&gt;&lt;font face="Courier New"&gt;   &lt;/font&gt;   ' Set BulkFile connection to gvBulkFile global variable&lt;br&gt;&lt;font face="Courier New"&gt;   &lt;/font&gt;   '&lt;br&gt;&lt;font face="Courier New"&gt;   &lt;/font&gt;   Dts.Connections.Item(&amp;quot;BulkFile&amp;quot;).ConnectionString = Dts.Variables.Item(&amp;quot;FileName&amp;quot;).Value.ToString() &lt;/font&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;   &lt;/font&gt;   ' Success&lt;br&gt;&lt;font face="Courier New"&gt;   &lt;/font&gt;   Dts.TaskResult = Dts.Results.Success&lt;br&gt;&lt;font face="Courier New"&gt;   &lt;/font&gt;End Sub &lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;End Class&lt;/font&gt; &lt;/font&gt;
&lt;p&gt;For every loop within the “Foreach Loop” container, the “FileName” global variable is updated from the “FileList” object global variable with a new file name. This file name is then passed on to the above VB.NET Script code which will then update the “BulkFile” connection to point to this new file. 
&lt;p&gt;&lt;b&gt;&lt;/b&gt;  
&lt;p&gt;&lt;b&gt;&lt;u&gt;Bulk Insert Task&lt;/u&gt;&lt;/b&gt; 
&lt;p&gt;The final task within the “ForEach Loop” container is to actually perform the task of bulk inserting the data from the file to the database. To set it up, create a bulk insert task with the configuration noted below. 
&lt;p&gt;&lt;img height=528 src="http://tk3.storage.msn.com/x1pWGh1LWVMb5_Rnm-BdT9BVgsgihx2cgY0w0bV_zk03yVgmu0T4RTZ8M56ZY1HjgT8W_mgVvsH1wEBuf6O-FnnY1GbYeZ1iVTvhaqkZV7943Bd3SbocT43IGPsj34NWCIXugZLt0Fi_QTam95s6_m72A" width=624 border=0&gt; 
&lt;p&gt;As you can see: 
&lt;p&gt;&lt;b&gt;Destination Connection&lt;/b&gt;: This points to the database (in this case) which is already specified by the DbConnection connection manager. The Destination Table itself can be pre-specified as per above (test.dbo.CsvData) or you can use an expression to point to some global variable which contains the table name. 
&lt;p&gt;&lt;b&gt;Format&lt;/b&gt;: In the case of this example, I’m using a CSV formatted file hence the format choices made. Saying this, like any bulk insert task you can specify TSV, binary, and/or your own format file to bulk insert the data. 
&lt;p&gt;&lt;b&gt;Source Connection&lt;/b&gt;: This is pointing to the BulkFile connection manager which was manipulated just the task before (Update BulkFile Connection) to point to the new file. 
&lt;p&gt;&lt;b&gt;&lt;/b&gt;  
&lt;p&gt;&lt;b&gt;&lt;u&gt;Discussion&lt;/u&gt;&lt;/b&gt; 
&lt;p&gt;As you can see within this article, above are some pointers on how to use the connection managers, expressions, and script code to bulk insert many files into a database. A key for any enterprise or diverse production environment is that the use of global variables will also allow you to use configuration files, metadata, and/or command line parameters to manipulate the processing at run-time.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1323305814572094295&amp;page=RSS%3a+SSIS+Processing+Tips%3a+Bulk+Insert+many+files+to+a+database&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=denster.spaces.live.com&amp;amp;GT1=denster"&gt;</description><comments>http://denster.spaces.live.com/Blog/cns!125D53A08EC75357!1210.entry#comment</comments><guid isPermaLink="true">http://denster.spaces.live.com/Blog/cns!125D53A08EC75357!1210.entry</guid><pubDate>Wed, 27 Dec 2006 23:37:08 GMT</pubDate><slash:comments>4</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://denster.spaces.live.com/blog/cns!125D53A08EC75357!1210/comments/feed.rss</wfw:commentRss><wfw:comment>http://denster.spaces.live.com/Blog/cns!125D53A08EC75357!1210.entry#comment</wfw:comment><dcterms:modified>2007-07-13T06:26:52Z</dcterms:modified></item><item><title>SSIS global variables and execute process task</title><link>http://denster.spaces.live.com/Blog/cns!125D53A08EC75357!449.entry</link><description>&lt;div&gt;Within SQL Server 2000, if you wanted to execute a command line task (e.g. execute a BCP statement within DTS such as &amp;quot;&lt;font color="#0000ff"&gt;bcp &amp;lt;arguments&amp;gt;&lt;/font&gt;&amp;quot;), a common task would be to use a &lt;font color="#0000ff"&gt;ActiveX Script Task&lt;/font&gt; to create your command line statement.  This command line statement would then be placed within a global variable.  Then a dynamic variable task would be used to take the global variable value and place it within the Arguments property of the&lt;font color="#ffff99"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;Execute Process Task&lt;/font&gt;. &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;For SQL Server 2005, you can use SQL Server Integration Services (SSIS) to do this task much simpler.  You can still use a &lt;font color="#0000ff"&gt;Script Task &lt;/font&gt;(e.g. using Visual Basic .NET) to create your command line statement and load this statement into a variable.  But skipping the dynamic variable task (which no longer exists), you can modify the &lt;font color="#0000ff"&gt;Execute Process Task &lt;/font&gt;at the point of the &lt;font color="#0000ff"&gt;Property Expression &lt;/font&gt;attribute. This attribute can then load the Arguments property of the Execute Process Task directly.  &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;For more info on the “Property Expression” attribute can be found within the “Expression Builder” at &lt;a href="http://msdn2.microsoft.com/en-us/library/ms181412.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms181412.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;As you can see from the &amp;quot;Execute Process Task Editor&amp;quot;, you can set the Global Variable &lt;em&gt;&lt;font color="#0000ff"&gt;DateInfo&lt;/font&gt;&lt;/em&gt; (within the &amp;quot;Property Expression Editor&amp;quot; it is @DateInfo) to the Execute Process Task Arguments attribute.  For example, if you had a command line statement of:&lt;/div&gt;
&lt;div&gt;       LogInfo.exe &amp;lt;DateInfo&amp;gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;where &amp;lt;DateInfo&amp;gt; is a command line argument, the &lt;em&gt;DateInfo&lt;/em&gt; variable will contain the date information that normally is passed to the LogInfo.exe executable.  Presuming your Script Task creates the correct date and props it into a variable, associating the &amp;quot;Process Task Editor&amp;quot; Arguments attribute to this variable will allow the SSIS package to dynamically change the arguments to execute the &amp;quot;Execute Process Task&amp;quot;.&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size:10pt;font-family:Arial"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;table cellspacing="0" border="0"&gt;&lt;tr height="8"&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;a href="http://byfiles.storage.live.com&amp;#47;y1pRkvEO0dzlWu2iFCIhIta0zixXHSGD9UcQJw3JvHOluz8DDmFhFjqpg"&gt;&lt;img src="http://storage.live.com&amp;#47;items&amp;#47;125D53A08EC75357&amp;#33;450&amp;#58;thumbnail" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1323305814572094295&amp;page=RSS%3a+SSIS+global+variables+and+execute+process+task&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=denster.spaces.live.com&amp;amp;GT1=denster"&gt;</description><comments>http://denster.spaces.live.com/Blog/cns!125D53A08EC75357!449.entry#comment</comments><guid isPermaLink="true">http://denster.spaces.live.com/Blog/cns!125D53A08EC75357!449.entry</guid><pubDate>Sat, 13 May 2006 06:05:33 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://denster.spaces.live.com/blog/cns!125D53A08EC75357!449/comments/feed.rss</wfw:commentRss><wfw:comment>http://denster.spaces.live.com/Blog/cns!125D53A08EC75357!449.entry#comment</wfw:comment><dcterms:modified>2007-07-13T07:48:25Z</dcterms:modified></item></channel></rss>