DTS xChange Help System

Download DTS xChange

 Watch Quick Start Video (10 Minutes)  View DTS to SSIS Migrations FAQs
 View Screenshots  Compare MS Wizard
Request Pricing  Download Datasheet

Table of contents

1. Welcome to DTS xChange
    1.1 Product Overview
    1.2 What's New
    1.3 Installation Requirements
    1.4 Licensing Options
    1.5 Planning DTS to SSIS Migration
    1.6 Running Packages on 64 Bit Machine
2. DTS xChange Reference
    2.1 About DTS xChange
    2.2 Option Screen
    2.3 Specify Source and Target Screen
    2.4 Select Packages Screen
    2.5 Select Migration Options and Best Practices Screen
        2.5.1 About Migration Options and Best Practices
        2.5.2 Deployment Framework
        2.5.3 Convert Child Packages
        2.5.4 Auditing Framework
            2.5.4.1 About Auditing and Monitoring Framework
        2.5.5 Consolidate Connection Managers
        2.5.6 Logging to SQL Server
        2.5.7 Logging to Text File
        2.5.8 Add CheckPoint
        2.5.9 Wrap Package in Transaction
        2.5.10 NULL Handling
        2.5.11 Codepage Settings
        2.5.12 Handle Unsupported Data Providers
        2.5.13 DataFlow Options
        2.5.14 Other Options
    2.6 Verify and Migrate Packages Screen
    2.7 View Migration and Validation Log Screen
    2.8 View Migration History Screen
3. DTS Profiler Reference
    3.1 About DTS Profiler
    3.2 Option Screen
    3.3 Select Source Screen
    3.4 Select Packages Screen
    3.5 Enter Estimate Screen
    3.6 Profiler Summary Report
    3.7 Profiler Detail Report
4. Auditing and Monitoring Framework Reference
    4.1 About Auditing and Monitoring Framework
    4.2 SSIS Execution Dashboard
    4.3 Package Execution Trend Report
    4.4 Errors/Warnings Report
    4.5 Extract/Load Detail Report
    4.6 Extract/Load Trend Report
    4.7 Running Packages Report
    4.8 Recent Executions Report
5. Migration Reference
    5.1 Tasks
        5.1.1 Data Pump Task
        5.1.2 Data Driven Query Task
6. Common Errors/Warnings Reference
    6.1 Errors
        6.1.1 E0001 - Cannot Aquire Connection From Connection Manager
        6.1.2 E0002 - Invalid class string
    6.2 Warnings
        6.2.1 W0001- Truncation may occur
        6.2.2 W0002- Removing unused columns may increse performance
7. Frequently Asked Questions
    7.1 FAQ - What's new in SSIS 2008
    7.2 FAQ - How to pass parameters to DTS or SSIS package
    7.3 FAQ - How to convert Scripting.FileSystem object of ActiveX Script to native SSIS Task
    7.4 FAQ - How to convert ADODB object of ActiveX Script to native SSIS Task
    7.5 FAQ - How to loop through files in a specified folder, load one by one and move to archive folder using SSIS
    7.6 FAQ - How to send HTML email in SSIS
    7.7 FAQ - How to migrate OLAP Task from DTS to SSIS
    7.8 FAQ - How to make my SSIS connections dynamic so I can easily switch to different environment (e.g. Dev, QA, Prod ...)
    7.9 FAQ - How to migrate parameterized DTS packages to SSIS (i.e. Parameters passed using command line from SQL Server Job)
    7.10 FAQ - How can DTS xChange save time and money
    7.11 FAQ - How to read/write variable value from child/parent package in SSIS
    7.12 FAQ - Is there any 3rd party tool available in the market other than DTS xChange to help with DTS to SSIS migration
    7.13 FAQ - What are the advantages/disadvantages of storing SSIS packages to MSDB vs File System
    7.14 FAQ - Why should I migrate DTS packages to SSIS (advantages of SSIS over DTS)
    7.15 FAQ - Which data providers are supported in SSIS
    7.16 FAQ - How to Enable/disable Task at runtime In SSIS
    7.17 FAQ - How to run SSIS Packages using 32bit drivers on 64bit machine
    7.18 FAQ - How to connect Integration Services running on a remote machine
    7.19 FAQ - Do I need multiple connections in SSIS for parellel processing
8. Support
    8.1 Contact Us
    8.2 Other Reference
    8.3 Copyrights

1. Welcome to DTS xChange

DTS xChange Help System v1.0


Last Updated on 1/22/2009



© 2009 Pragmatic Works, Inc. ALL RIGHTS RESERVED.

 

[TOP]

1.1 Product Overview

DTS xChange is an enterprise ready tool to convert DTS packages to SSIS 2005/2008 with very little manual effort. DTS xChange will automatically convert most of your tasks, variables, connections and any other package level settings automatically. DTS xChange offers 3-Phase approach to convert your DTS packages.

Profile – DTS xChange Profiler helps you estimate your migration project in hours and dollar cost whether you choose to use an automation tool or not.

Convert
– DTS xChange will migrate your packages with minimum efforts, applying rules to each DTS package as it migrates them to enforce best practices.

Monitor
– SSIS Report Viewer is a powerful and very easy to use Auditing Tool to Audit Packages migrated (with Auditing Framework) using DTS xChange. Using SSIS Report Viewer you can do real time package execution analysis in detail or trend view. It contains a series of reports to view errors, warnings, extracted/loaded record count, run time info for package and tasks, Machine Name, User Name and many more.
 

Note:
Convert : Quick Start video of DTS to SSIS Migration Profile : Quick Start video of DTS Profiler

DTS to SSIS Migration/Conversion
Figure: 3-Components of DTS xChange

Note:
DTS xChange can apply auditing framework only during conversion process. To re-apply auditing framework to converted SSIS packages or newly created SSIS packages you have to use SSIS xPress® (Sold Separately). SSIS xPress also comes with few additional features other than auditing framework (e.g. Notification Framework, Package Validation and Package Deployment etc.).

DTS to SSIS Migration/Conversion
Figure: High level overview of DTS xChange architecture

DTS xChange Features

Comparison to the MS DTS Migration Wizard

The below table shows you a comparison between the built in wizard and DTS xChange. To see a complete comparison list, please see our complete comparison documentation.

DTS to SSIS Package Migration PDF Version (1089 KB) | DTS to SSIS Package Migration Word Version (442 KB)

Feature DTS xChange Support DTS Migration Wizard Support
Conversion of Execute SQL Task Yes - Convert DTS to SSIS Automatically Yes - Convert DTS to SSIS Automatically
Conversion of Execute Process Task Yes - Convert DTS to SSIS Automatically Yes - Convert DTS to SSIS Automatically
Conversion of Data Pump Task Yes - Convert DTS to SSIS Automatically Yes - Convert DTS to SSIS Automatically (Sometimes)
Conversion of Dynamic Properties Task Yes - Convert DTS to SSIS Automatically No - Do not Convert DTS to SSIS Automatically
ODBC Support Yes - Convert DTS to SSIS Automatically as a Source No - Do not Convert DTS to SSIS Automatically
UDL File Support Yes - Convert DTS to SSIS Automatically No - Do not Convert DTS to SSIS Automatically
Password protected Access Database Yes - Convert DTS to SSIS Automatically No - Do not Convert DTS to SSIS Automatically
Flat File that doesn't map all columns Yes - Convert DTS to SSIS Automatically No - Do not Convert DTS to SSIS Automatically
Data conversion between source and destination Yes - Convert DTS to SSIS Automatically No - Do not Convert DTS to SSIS Automatically
SQL Native Client support Yes - Convert DTS to SSIS Automatically No - Do not Convert DTS to SSIS Automatically
Full package validation after migration Yes - Convert DTS to SSIS Automatically No - Do not Convert DTS to SSIS Automatically
Detailed logs of conversion Yes - Convert DTS to SSIS Automatically No - Do not Convert DTS to SSIS Automatically
Enterprise rules for migration to get the benefit of SSIS Yes - Convert DTS to SSIS Automatically No - Do not Convert DTS to SSIS Automatically
SSIS logging turned on Yes - Convert DTS to SSIS Automatically No - Do not Convert DTS to SSIS Automatically
Checkpoint file support Yes - Convert DTS to SSIS Automatically No - Do not Convert DTS to SSIS Automatically
Children package migration Yes - Convert DTS to SSIS Automatically No - Do not Convert DTS to SSIS Automatically
Profiling capability Yes - Convert DTS to SSIS Automatically No - Do not Convert DTS to SSIS Automatically

[TOP]

1.2 What's New

Version 4.0.5   [Nov 3, 2008]

Version 4.0.4   [Oct 27, 2008]

Version 4.0.3   [Sep 4, 2008]

Version 4.0.2   [Sep 2, 2008]

Version 4.0.1   [Aug 4, 2008]

Version 3.0.1   [Jun 29, 2008]

Version 2.1.4   [Jun 10, 2008]

Version 2.1.3   [Jun 4, 2008]

Version 2.1.2   [May 28, 2008]

Version 2.1.1   [May 22, 2008]

Version 2.0.0 - R4  [Apr 29, 2008]

Version 2.0.0 - R3  [Apr 28, 2008]

Version 2.0.0 - R2  [Apr 25, 2008]

Version 2.0.0 - R1  [Apr 24, 2008]

Version 1.8.0 - R1  [Apr 4, 2008]

Version 1.7.0 - R1  [Mar 10, 2008]

Version 1.6.2 - R100  [Feb 14, 2008]

Version 1.6.1 - R0 [Feb 6, 2008]

Version 1.6.0 - R0  [Oct 1, 2007]

[TOP]

1.3 Installation Requirements

Before you install DTS xChange make sure you meet the following requirements for the machine where you are planning to install DTS xChange.
Note:
Backward Compatibility Components are not installed by default during SQL Server 2008 Installation so make sure you have that selected during setup. You can click advanced options and select Backward Compatibility components.

1. Check if BIDS (Business Intelligence Development Studio) installed ?

To check if BIDS is installed open Start -> All Programs -> Microsoft SQL Server 2005 or 2008. You should be able to see Business Intelligence Development Studio icon if it is installed.

DTS to SSIS Migration/Conversion
Figure: Check Business Intelligence Development Studio Installed


2. Check if SSIS Components Installed?

To check if necessary components to create and run SSIS packages installed, perform the following steps.

  1. Open Start -> All Programs -> Microsoft SQL Server 2005 or 2008 -> SQL Server Business Intelligence Development Studio.
  2. Once BIDS is launched click File -> New Project
  3. In the "New Project" dialog box highlight "Business Intelligence Projects" category in the left hand side and then make sure you can see "Integration Services Project" on the right hand side (see Figure 1-2)
DTS to SSIS Migration/Conversion
Figure: Check Integration Services Components Installed

3. Check if Backward Compatibility Components installed?

To check if Backward Compatibility Components installed perform the following steps

  1. Open Start -> All Programs -> Microsoft SQL Server 2005 or 2008 -> SQL Server Management Studio.
  2. Connect to any SQL 2005 Instance.
  3. Expand Management -> Legacy -> Data Transformation Services
  4. Right click on the node and Import Package (Note: Only DTS Structured Storage File can be imported). Browse existing *.dts file click OK to add the file.
  5. Once Package is listed under tree node right click and Open the package in the DTS Designer to make sure if you can view the package.
DTS to SSIS Migration/Conversion
Figure: Check Backward Compatibility Components Installed

Note:
If above test failed and you are getting components missing error then please run the SQL Server 2005/2008 setup and install Backward Compatibility components or download from the following URL (For 32 bit OS use x86 link).

Microsoft SQL Server 2005 Backward Compatibility Components
The SQL Server Backward Compatibility package includes the latest versions of Data Transformation Services 2000 runtime (DTS), SQL Distributed Management Objects (SQL-DMO), Decision Support Objects (DSO), and SQL Virtual Device Interface (SQLVDI). These versions have been updated for compatibility with both SQL Server 2005 and SQL Server 2008 and include all fixes shipped through SQL Server 2000 SP4 and SQL Server 2005 SP2.

X86 Package (SQLServer2005_BC.msi) - 11273 KB
X64 Package (SQLServer2005_BC.msi) - 18569 KB
IA64 Package (SQLServer2005_BC.msi) - 23510 KB

[TOP]

1.4 Licensing Options

How DTS xChange is licensed and how does it keep track of migrations performed?

DTS xChange is licensed by per package which means you have to purchase license based on number of packages you want to migrate. You can use DTS Profiler to determine how many packages you have and how long they may take to migrate manually vs using DTS xChange.

As you migrate packages using DTS xChange you will see "Total Available Migrations" counter will be reduced from your license.

You can migrate same package (with same internal Package ID) multiple times which will not reduce your remaining migration count.

Your counter will be only decreased by one when you migrate new package using DTS xChange. DTS xChange keeps track of package migrations based on package internal identifier which insures that renaming package will not count your package twice because package internal identifier remains same.

 
DTS to SSIS Migration/Conversion
Figure: Migration Counter

How to add new migrations (i.e. apply new serial number to get more migrations)?

If your migration limit is exceeded and you can not migrate new packages then you have to purchase new serial number which allows additional migration. By looking at first 3 letter of your serial number you can determine how many migrations will be allowed. If serial number starts with DEV then it will give you 50 Migrations or look for first 3 Numeric prefix which indicates migration count (i.e.  080-XXXXX-XXXX-XXXXX will give you 80 migrations)


DTS to SSIS Migration/Conversion
Figure: Registration Information

To add more migrations you have to first deactivate your current license or you can install product on new machine and apply new serial number. To de-activate the current license perform the following steps (only if your product is already registered and you want to apply new serial number)
  1. Launch DTS xChange
  2. Click Registration Information Link at the top
  3. On the registration dialog box click "Deactivate Software"
  4. Once product is de-activated you will be forced to close the application
  5. Launch DTS xChange again. This time it will launch as Trial version
  6. Click on "Register" button and fill your name, company and serial number  (you may check Activate Online check box if you are connected to internet)
  7. Click "Register" button to complete registration
Once new serial number is applied check your migration counter on the very first screen and you will find that new migrations are added to your license. When you apply new serial number you can still migrate old packages migrated with all previous serial numbers.

How to transfer license to different machine?

DTS xChange is very flexible in terms of licensing. If you ever decide to transfer your license to other machine then perform the following steps. Transferring license requires Deactivate product from one machine and activate on the other machine with same serial number.

  1. Launch DTS xChange
  2. Click Registration Information Link at the top
  3. On the registration dialog box click "Deactivate Software"
  4. Once product is de-activated you will be forced to close the application
  5. Install DTS xChange on the new machine where you want to transfer the license. Launch DTS xChange after install.
  6. On the trial dialog box Click on "Register" button and fill your name, company and serial number  (you may check Activate Online check box if you are connected to internet)
  7. Click "Register" button to complete registration

Should I install DTS xChange on single machine or multiple machines?

You can install DTS xChange on single machine or multiple machines depending on how many people need access to DTS xChange. Please review the following figures on both scenarios. If you are installing DTS xChange on multiple machines then please make sure you split your total package migrations in multiple Serial Numbers instead of using one Serial number for all packages (You can always ask customer service before your actual purchase. There is no additional charge to split you serial number but it has to be requested before your purchase. Once serial number is issued it can not be cancelled).

 

DTS to SSIS Migration/Conversion
Figure: DTS xChange - Install on single machine

 

DTS to SSIS Migration/Conversion
Figure: DTS xChange - Install on multiple machines

[TOP]

1.5 Planning DTS to SSIS Migration

DTS to SSIS Migration can be time consuming if you do not spend time for creating proper environment for Migration. Please go through the following check list items to get the best migration output, reduce troubleshooting time and improve ROI.

Use DTS Package Profiler to plan your migration project

DTS to SSIS migration can be challenging so make sure you perform all necessary planning before you start actual conversion. You can use DTS Package Profiler to find out how many packages you have and which packages are duplicate. You can also Define priority to each package and assign developer who will be responsible for package migration. Perform the following actions to get started with you migration project.
Note:
  • On the package listing screen during package profile you can use "Copy to Clipboard" option to get the list of packages listed on the screen and Paste into Excel.
  • Use filter functionality on the select package screen to quickly find packages with certain prefix or sub string.  You can click on column header to sort by name or selection.
  • Export to PDF if you are getting error while exporting to excel. This may occur if your report exceeds 65000 lines (This is known limitation in Excel).
  • Export to Excel if you want to retain Expand/Collapse functionality of report
  • Check security rights

    Check data source connectivity

    Most of DTS packages deal with one or more data sources to extract/load data or to execute DDL/DML statements. DTS xChange makes some smart adjustments in SSIS packages based on metadata (e.g. column name, size, precision etc.) provided by datasource. If metadata is not validated due to connectivity issue during migration then DTS xChange will use offline settings stored in DTS package but this can cause unexpected behavior some times (e.g. invalid data type is assigned to columns).

    So to get the best output with DTS xChange make sure you check the following items

    Check drivers and ODBC DSN

    If you have DTS package using multiple data sources other than SQL server than you need to check the following items
    Note:
    Click here to get the full list of supported and unsupported drivers in SSIS.

    Standardize naming convention and folder structure

    SSIS Packages can have many dependencies. Most common dependencies are Configuration files, Log files and Checkpoint Files. It is important that you try to keep same folder structure and path if possible across the same environment because all paths for listed dependencies are hard coded in Package and because of that if you move package from one environment to other and same path does not exist then package may fail to execute.

    Sometimes In large organization it is not possible to keep same path in different environments because of hardware and security constraints (e.g. on Development machine you may store under C:\SSIS but on the Production machine everything must go under M:\SSIS). In this scenario make sure when you deploy packages you change Paths of any dependency file referred inside your SSIS package.

     
    Note:
    Use SSIS xPress® to Deploy SSIS packages from one environment to another using Deployment feature. This feature allows to deploy multiple SSIS packages easily along with all dependencies. You can also change Config and CheckPoint path during deployment process.

    DTS to SSIS Migration/Conversion
    Figure: Standardize folder structure

     

    [TOP]

    1.6 Running Packages on 64 Bit Machine

    Things to remember when you working in 64bit environment
    Potential problems in a 64-bit setup

    32-bit tools not installed: The 32-bit runtime and tools are not automatically included when you install 64-bit Integration Services. If you have packages that need to run in 32-bit mode, then you have to select an additional option on the Feature Selection page of Setup. On x64, this can be BIDS or Management Tools - Complete; since BIDS is not available on Itanium, on Itanium you must check Management Tools - Complete.

    32-bit tools run by default: When the 32-bit tools are also installed, the path to the 32-bit tools appears BEFORE the path to the 64-bit tools in the PATH environment variable. Therefore, if you just type "dtexec" at the command prompt, for example, you are running the 32-bit version of the tool. Your options are to type the full 64-bit path, make the 64-bit directory the current directory first, or change the order in the PATH environment variable. Our testing has not shown any negative side-effects to changing the order of the PATH, but I make this suggestion cautiously.

    Features that DON'T work on any 64-bit operating system (x64 or Itanium)

    DTS: You cannot run DTS packages in 64-bit mode on x64, or at all on Itanium. Therefore you also cannot use the Execute DTS 2000 Package task in these circumstances. Of course on x64 you can run DTS packages, or SSIS packages that run DTS packages, in 32-bit mode, after manually installing the optional DTS run-time support.

    Excel, Access, Jet: You have to run packages that use the Jet provider (Access and Excel) in 32-bit mode.

    SQL Server Compact: You have to run packages that use the SQL Server Compact provider in 32-bit mode.

    Logging to SQL Server Profiler: You can only use package logging to SQL Server Profiler in 32-bit mode.
     

    Reference:
      SQL Server 2005 - 64-bit Considerations for Integration Services
      SQL Server 2008 - 64-bit Considerations for Integration Services
      64-bit Story from SSIS.Wik.is
      64-bit Consideration from Dougbert.com
      64-bit Consideration from wiki.sqlis.com

    [TOP]

    2. DTS xChange Reference

    2.1 About DTS xChange

    DTS xChange is an enterprise ready tool to convert DTS packages to SSIS 2005/2008 with very little manual effort. DTS xChange will automatically convert most of your tasks, variables, connections and any other package level settings automatically. DTS xChange offers 3-Phase approach to convert your DTS packages.

    Profile – DTS xChange Profiler helps you estimate your migration project in hours and dollar cost whether you choose to use an automation tool or not.

    Convert
    – DTS xChange will migrate your packages with minimum efforts, applying rules to each DTS package as it migrates them to enforce best practices.

    Monitor
    – SSIS Report Viewer is a powerful and very easy to use Auditing Tool to Audit Packages migrated (with Auditing Framework) using DTS xChange. Using SSIS Report Viewer you can do real time package execution analysis in detail or trend view. It contains a series of reports to view errors, warnings, extracted/loaded record count, run time info for package and tasks, Machine Name, User Name and many more.
     

    DTS to SSIS Migration/Conversion
    Figure: 3-Components of DTS xChange

    [TOP]

    2.2 Option Screen

    After launching DTS xChange you will see option screen.
     
    DTS to SSIS Migration/Conversion
    Figure: Option screen


    Migrate:
    This option will launch wizard for DTS package migration. Using this option you can convert DTS packages to SSIS 2005/2008. It will also apply series of best practices during migration and at the end of the migration you will see full migration log and validation report of converted packages for possible errors/warnings.

    Note:
    Using Trial version you can convert maximum 3 packages. If you are converting DTS package which is calling other package(s) then parent package and child package(s) will be counted as separate migrations.

    Profile:
    This option will launch DTS Package Profiler Wizard. Profiler option is helpful to find out how many packages you have and how complex they are to convert manually or using DTS xChange. DTS Profiler will generate detailed report with package and task level break down which you can export to PDF or Excel.

    Reports:
    This option will launch Report Viewer Application. This is the place where you can view several predefined reports for SSIS package auditing.

    Log:
    This option will show history of all previous migration occurred on current machine where you have installed DTS xChange.

    Support/Bug:
    You can click this URL if you have any issue using DTS xChange. You can contact support by phone/email or by visiting http://www.pragmaticworks.com/support

    Check for update:
    DTS xChange has auto update feature which will check every couple of days or everytime you launch DTS xChange depending option you have set. If product update is found then you will see product update dialog box as below.

    DTS to SSIS Migration/Conversion
    Figure: Option screen


    Registration:
    Click this option to view license information of your product. You can use same screen to activate or deactivate license of your product.

     

    [TOP]

    2.3 Specify Source and Target Screen

    On the source/target screen you can specify location of DTS packages and location for converted packages.

    DTS to SSIS Migration/Conversion
    Figure: Option screen

    Specify where DTS package(s) are stored

    Source SQL Server
    If your DTS packages stored on SQL Server 2000 or SQL Server 2005 (under legacy mode) then select this option. You can specify instance name or IP.

    Examples:
  • MYSERVER\SQLINST1
  • 192.168.2.3
  • (local)
  • MYSERVER\DEVINST1,1433
  • Source File System
    If DTS packages are stored as COM Structured Storage files (*.dts) then select this option. You have to browse folder location where dts files are stored. On the next screen you can select packages found under selected folder.

    Specify where migrated package(s) will be stored

    Target SQL Server
    If you want to store converted package on SQL Server 2005 under MSDB  database then select SQL Server target. You can also browse specific target folder of MSDB by clicking browse button.

    DTS to SSIS Migration/Conversion
    Figure: Browse MSDB folder

    Target File System

    If you want to save converted packages on file system (*.dtsx) then select File System option.

     
     

    Target Platform
    This drop down will list all installed versions of SQL Server which you can select as target platform. If you don't see any item in this dropdown then make sure you install necessary components specified in the requirements section. Click here to learn more about requirements.

    Overwrite Option
    You can select one of three different options to specify action when file already exists on the target location.

     

    64bit Option
    Select this option to "Yes" if you planning to run SSIS packages on 64bit machine. This selection will not perform any additional actions during migration process. If you select "Yes" or "Don't Know" then you will see some warnings describing known issues on 64bit machine.
     
    Advanced Options
    Under this panel there are three options.
    Perform MetaData Validation: This option is only for internal testing purpose. Do not uncheck when you converting package which will used for production. If you uncheck this option then no metadata validation will be performed which will give faster migration but you may get unexpected behavior in some case.
    Log application log: This option will enable/disable detailed logging of migration and application events. Log is stored in AppLog.txt found under <program files>\pragmatic works\DTS xChange.
    Log migration history: This will generate migration history file after each migration and you can use "Log" option found on the very first screen to view historical data of migration log.

    [TOP]

    2.4 Select Packages Screen

    This screen will list all packages for selected source location. Click on the first column to sort packages by selection status and click on second column to sort by package name.
     
    DTS to SSIS Migration/Conversion
    Figure: package selection

    Display Associated Job Detail:
    This option will show four additional columns related associated job detail which includes Job Name, last execution date, creation date and last execution status.

    Search for:
    This option will filter package list based on search criteria (e.g. to list all packages with word "Test" enter Test in the filter box and click filter icon). This option is very handy when you have may packages and you don't know exact name of the package.

    Copy to clipboard:
    Click this button to save content of top grid into clipboard in Tab delimited values (you can copy/paste content to excel)

    Save report:
    Click this button to save content of top grid into Tab delimited values (you can copy/paste content to excel)

    [TOP]

    2.5 Select Migration Options and Best Practices Screen

    2.5.1 About Migration Options and Best Practices

    DTS xChange adds value to your converted packages by applying series of options and SSIS best practices. If you are new to SSIS and you are not sure what are the best options for you then leave default selection. To set default values click on the button labeled as "Click here to set Default Settings"

    DTS to SSIS Migration/Conversion
    Figure: best practices warning

    Current version of DTS xChange applies the following best practices.

    You can also apply the following new features of SSIS during migration process. These are native features in SSIS and DTS xChange gives you options to apply them in bulk during migration process. Please refer MSDN for more information on these features.

    [TOP]

    2.5.2 Deployment Framework

    Configuration files are similar to what you might have used in DTS called UDL files. Unlike UDL file SSIS Configuration file can also store Variable value, Task Property and Connection Attributes.

    In SSIS there are several methods of making package portable which includes.

    The most common and easy to use method is XML Configuration File. DTS xChange makes your package portable using Deployment framework feature which automatically creates reusable config files to stores connection strings. DTS xChange automatically creates minimum number of unique configuration files and reuses across many packages. This is a really useful feature to save time in deployment process. When you move your packages to different environment  (e.g. DEV to PROD) where you have to point all your package connections to new datasources then no worries... Simply edit config files using your favorite XML editor or Notepad, change server name/other connection specific information and all packages using that config file will start using new connection string.   

    DTS to SSIS Migration/Conversion
    Figure: add deployment framework


    Figure: configurations added by DTS xChange

    Create config file per connection (shared files):
    This is the recommended option and when you select this option, DTS xChange will try to create minimum number of config files by comparing server name, username and database name attributes of DTS package connections and existing config files. If config file already created with matching attributes then it will be reused in the newly created SSIS package. This option will store only one unique connection string per config file.

    If  "Consolidate connection manager" best practice is selected then connection manager and config file naming convention will be <connection type>_<database or file name>_<number>  (e.g. OLEDB_NORTHWIND_1)

    Create config file per package:
    Select this option if you have requirement to manage config file per package and you don't want to share that connection information with any other package. This option will store all connection information used in SSIS package.

    Where config files will be stored:
    Specify folder location where new config files will be stored. Try to keep this location same for all packages you migrate using DTS xChange because during migration process DTS xChange constantly scan this directory to make some smart adjustments and reuse existing config file whenever possible. During runtime SSIS package will read config file from this location so make sure when you execute your SSIS package this path exists with all config files used by package.

    Note:
    Config file path is hard coded in the package. So try to keep config folder path consistent across all environments otherwise when you try to execute the package on a different machine it will fail because of different config file path.

    If you have different path in different environment then use SSIS xPress® to Deploy SSIS packages from one environment to another using Deployment feature. This feature allows to deploy multiple SSIS packages easily along with all dependencies. You can also change Config and CheckPoint path during deployment process.

    Store configuration in separate elements:
    This option will create individual XML elements for ServerName, UserName, Password and Catalog in the config file. If you want to get more control on connection string attributes (i.e. Define Time out or change Authentication Method) then don't use this option.

    Store configuration in a single element:
    This is a recommended option. It will store entire ConnectionString  including password into single XML element.

    Create configurations for the following types:
    Check connection types for which you want to generate config file. By default all connection types are selected.

    Additional Reference:
      Making SQL Server 2005 Integration Services Packages Portable

     

    [TOP]

    2.5.3 Convert Child Packages

    If you select "Convert child DTS package to SSIS package" option then DTS xChange automatically detects and converts Execute Package task to Execute SSIS Package task and all child packages will be migrated to SSIS automatically. If you don't select this option then your converted package will still point to child DTS packages.

     

    DTS to SSIS Migration/Conversion
    Figure-3: Convert child packages

    Please check the Figure 2,3 to see the differences in migration output when "Convert child packages" option is unchecked and checked..

    DTS to SSIS Migration/Conversion
    Figure-2: With convert child package setting OFF
    DTS to SSIS Migration/Conversion
    Figure-3: With convert child package setting ON

    You can specify one of three options for target location of converted child packages

    Default (same as parent location):
    Select this option if you want to save converted child package to the same location as parent packages (Target location specified on the "select source and target location" screen).

    Store on SQL Server:
    Select this option if you want to save converted packages to MSDB database on SQL Server 2005/2008.

    Store on file system:
    Select this option if you want to save converted packages to file system location other than parent package location (i.e. different directory).

    [TOP]

    2.5.4 Auditing Framework

    DTS xChange offers easy way to add rich auditing features in converted packages using custom auditing framework developed by Pragmatic Works. This Auditing  Frameworks uses all Native SSIS features and it can track packages in real-time. Auditing Framework comes with lots of predefined reports which can give you some valuable information.


    DTS to SSIS Migration/Conversion
    Figure: add auditing framework

    Server:
    Database server instance name where you want to store auditing information. This can be SQL Server 2000/2005 or 2008.

    Windows Authentication:
    If you using windows authentication to connect to SQL Server then check this option.

    User Name:
    Enter SQL Server login name. This option will be disabled if you select windows authentication.

    Password:
    Enter SQL Server password. This option will be disabled if you select windows authentication.

    Log Source Row Count:
    This option will capture the row count coming from source. Some times this will be also referred as extracted row count.

    Log Destination Row Count:
    This option will capture the row count coming going into destination. Some times this will be also referred as loaded row count.

    Log SQL Statement for Source/Destination:
    If this option turned on then sql query written to extract the data will be logged. If you pulling data from flat file or some other relational source then Table/View Name will be logged.

    Log Connection Information:
    This option will log some useful attributes related to source or target connection which includes entire connectionstring, filename, servername, catalogname and username.

    Additional Reference:
      About Auditing and Monitoring Framework

    [TOP]

    2.5.4.1 About Auditing and Monitoring Framework

    DTS xChange offers easy way to add rich auditing features in converted packages using custom auditing framework developed by Pragmatic Works. This Auditing  Frameworks uses all Native SSIS features and it can track packages in real-time. Auditing Framework comes with lots of predefined reports which can give you some valuable information.

    You can audit the following information using reports provided with Auditing Framework (Note: Use Report Viewer Application to view auditing data.)

    How does Auditing Framework work?

    The following changes will be made to SSIS package when you apply auditing framework. These changes are done based on options you select on the auditing screen.

    Here is the basic architecture of Auditing framework.

    DTS to SSIS Migration/Conversion
    Figure: Auditing Framework architecture

    DTS to SSIS Migration/Conversion
    Figure: Auditing Database Objects v3

    To view reports you have to use "Reports" option found on the main screen.

    DTS to SSIS Migration/Conversion
    Figure: View auditing reports

    There are seven inbuilt reports are shipped this version and more will be added in the future release.

    Report Name Description
    SSIS Execution Dashboard This dashboard gives one place view of most common counters of SSIS package execution.
    Package Execution Trend This report provides many useful information about trend of package runtime, task runtime and errors/warnings.
    Errors/Warnings Provides detailed error/warning report including package level errors (package level errors not listed in any other report)
    Recent Executions Provides information of running packages/tasks and already completed executions.
    Running Packages Provides real time information of currently running packages and tasks.
    Extract/Load Detail Provides extract/load detail (e.g. row count, source/target information, query, file name ...) about each dataflow in each package execution.
    Extract/Load Trend Provides graphical view of extract and load trend over several years, weeks, months and days.

    [TOP]

    2.5.5 Consolidate Connection Managers

    In DTS in many cases you have to create connections multiple times with same attributes (e.g. Server, User Name and Database Name). This can create maintainance issues because when connection arribute(s) are change you have to update multiple connections. In SSIS you can create connection manager once and reuse in your package with multiple task(s) (e.g. DataFlow Task, ExecuteSQL Task etc.).

    DTS xChange takes advantage of this new feature of SSIS and removes any duplicate connections from SSIS package. Any task referring to duplicate connections are adjusted automatically to use consolidated connection.

    DTS to SSIS Migration/Conversion
    Figure-1: Consolidate connection
     

    You can view real time counter of how many duplicate connections are removed on the migration summary panel during migration.

    DTS to SSIS Migration/Conversion
    Figure-2: Real time counter

    To check which connections have been consolidated you can check migration log in detail view (Check "Show Detail View" found on on the migration log page.).

    DTS to SSIS Migration/Conversion
    Figure-3: View consolidated Connection summary

    When you select consolidate connection setting, you may see fewer connections in SSIS package compared to your Original package. Please see the below example.

    DTS to SSIS Migration/Conversion
    Figure-4: With consolidate connection setting OFF
    DTS to SSIS Migration/Conversion
    Figure-5: With consolidate connection setting ON

    [TOP]

    2.5.6 Logging to SQL Server

    This option will enable native SQL Server Logging provider for converted packages. On this screen you can select several events which you want to log. If you have already selected Auditing Framework option then you can uncheck this option to avoid extra overhead of logging during package execution.
     
    Note:
    Logging to SQL Server is SSIS native logging provider and "Auditing Framework" is a custom logging framework created by pragmatic works using native SSIS feature called "Event Handler". Auditing Framework tracks performance, errors/warnings, row count and many more. Auditing Framework also gives you great reporting capability which you don't get when you select "Logging to text" or "Logging to SQL Server" option.

    For more information on Auditing Framework Click Here

     

    DTS to SSIS Migration/Conversion
    Figure-1: Logging to SQL Server

    Additional Reference:
     DTS to SSIS Help Reference Implementing Logging in Packages

    [TOP]

    2.5.7 Logging to Text File

    This option will enable native Text File Logging provider for converted packages. On this screen you can select several events which you want to log. If you have already selected Auditing Framework option then you can uncheck this option to avoid extra overhead of logging during package execution.
     
    Note:
    Logging to Text file is SSIS native logging provider and "Auditing Framework" is a custom logging framework created by pragmatic works using native SSIS feature called "Event Handler". Auditing Framework tracks performance, errors/warnings, row count and many more. Auditing Framework also gives you great reporting capability which you don't get when you select "Logging to text" or "Logging to SQL Server" option.

    For more information on Auditing Framework Click Here

     

    DTS to SSIS Migration/Conversion
    Figure-1: Logging to text file

    Additional Reference:
     DTS to SSIS Help Reference Implementing Logging in Packages

    [TOP]

    2.5.8 Add CheckPoint

    Integration Services can restart failed packages from the point of failure, instead of rerunning the whole package. If a package is configured to use checkpoints, information about package execution is written to a checkpoint file. When the failed package is rerun, the checkpoint file is used to restart the package from the point of failure. If the package runs successfully, the checkpoint file is deleted, and then re-created the next time the package is run.
     
    Reference:
      Using Checkpoints in Packages

    Using DTS xChange you can easily configure Checkpoints for converted packages. To enable checkpoints make sure "Add CheckPoint" option is turned on as shown below.

    DTS to SSIS Migration/Conversion
    Figure: add checkpoints

    [TOP]

    2.5.9 Wrap Package in Transaction

    Wrapping a package in a transaction ensures that data events are protected by a transaction. If a data problem occurs all actions that have occurred in the data are rolled back.

    You can apply transaction setting by selecting "Wrap Package in Transaction" option as shown below.

    DTS to SSIS Migration/Conversion
    Figure-1: Wrap the package in a transaction


    Note:
    Enabling this feature will require that the Microsoft Distributed Transaction Coordinator (MSDTC) service is enabled on each server participating in the package. Whenever possible try to use database native transactions (e.g. BEGIN TRAN... COMMIT) because MSDTS transactions are slower than native transactions.

    Isolation Level: There are seven different types of transaction isolation levels you can select from the dropdown.

     
    Isolation Level Description
    Unspecified A different isolation level than the one specified is being used, but the level cannot be determined. When using OdbcTransaction, if you do not set IsolationLevel or you set IsolationLevel to Unspecified, the transaction executes according to the default isolation level of the underlying ODBC driver.
    Chaos The pending changes from more highly isolated transactions cannot be overwritten.
    ReadUncommitted A dirty read is possible, meaning that no shared locks are issued and no exclusive locks are honored.
    ReadCommitted Shared locks are held while the data is being read to avoid dirty reads, but the data can be changed before the end of the transaction, resulting in non-repeatable reads or phantom data.
    RepeatableRead Locks are placed on all data that is used in a query, preventing other users from updating the data. Prevents non-repeatable reads but phantom rows are still possible.
    Serializable A range lock is placed on the DataSet, preventing other users from updating or inserting rows into the dataset until the transaction is complete.
    Snapshot Reduces blocking by storing a version of data that one application can read while another is modifying the same data. Indicates that from one transaction you cannot see changes made in other transactions, even if you requery.


    In DTS 2000 you had ability to run transactions over our packages that enabled you to fail or succeed whole groups of atomic units of work much in the same way that you can do using a traditional RDBMS.

    SQL Server Integration Services includes similar functionality although it is now much easier to configure. It also enables you to have multiple transactions in a package. Each container has a property called TransactionOption which is used to configure that container's participation in a transaction. If a container starts a transaction all child containers of that transaction have the option to enlist in that transaction.

    TransactionOption has 3 possible settings:

     
    TransactionOption Description
    NotSupported The container will not enlist in a transaction, even if one was started by a parent container.
    Supported The container will enlist in a transaction if one was started by a parent container. If a parent container did not start a transaction the container will not be enlisted in any transaction.
    Required The container will enlist in a transaction if one was started by a parent container. If a parent container did not start a transaction the container will start one itself.

     

    Additional Reference:
     DTS to SSIS Help Reference How to Configure a Package to use Transactions
     DTS to SSIS Help Reference Using Transactions in SSIS
     

    [TOP]

    2.5.10 NULL Handling

    There are several options on NULL Handling screen. The following screen shows default options selected when you launch DTS xChange first time. NULL Handling is a recommended setting and should not be unchecked unless you have specific reason.
     
    DTS to SSIS Migration/Conversion
    Figure-1: NULL handling issue for delimited Flat File

    Depending on what option you select on NULL handling screen derived column expression is generated (see Figure-4).

    Convert Blank [Numbers] to NULL:

    This setting will create an expression if target column is NUMERIC (i.e. int, smallint, money) and source column is text (i.e. nvarchar, varchar, char...).

    By default this setting is ON.

    Convert Blank [DateTime] to NULL:
    This setting will create an expression if target column is DateTime (i.e. smalldatetime, datetime) and source column is text (i.e. nvarchar, varchar, char...).

    By default this setting is ON.

    Convert Blank [Text] to NULL:
    This setting will create an expression if source is text (i.e. nvarchar, varchar, char...).

    By default this setting is OFF.

    Convert Blank [Boolean] to NULL:
    This setting will create an expression if target column is BOOLEAN (i.e. bit) and source column is TEXT (i.e. nvarchar, varchar, char...).

    By default this setting is OFF.
     

    Convert any other blank [i.e. GUID, varbinary...] to NULL:
    This setting will create an expression if source column is TEXT (i.e. nvarchar, varchar, char...).and target column is any data types other than TEXT , BOOLEAN, DATETIME and NUMERIC.

    By default this setting is ON.

    Convert column values containing only spaces to NULL:
    This setting is generally useful in case of Fixed width file where blank column is represented using several spaces (see Figure-3). If you select this setting then any column containing only spaces will be converted to NULL.

    By default this setting is OFF.

    Trim extra spaces for Boolean Value:
    This setting will create an expression if target column is BOOLEAN (i.e. bit) and source column is TEXT (i.e. nvarchar, varchar, char...). This setting is useful when you have for Fixed width file and you store "TRUE"


    What is NULL Handling and why do you need it?

    You will rarely face NULL Handling issues in DTS 2000 Packagee because everything in DTS is implicit, which means DTS will always go ahead and convert data type of your data to match with Target Column Data Type automatically which could be unwanted result in many cases. Automatic NULL Handling in DTS gives you ease of use but with the price of performance.

    On the other hand SSIS uses Explicit Conversion which means SSIS will not change the value or do type casting of the data unless you explicitly specify (Data Conversion Task is used for this purpose). This gives better performance compared to DTS but you have to do additional work to setup Data Conversion.

    It is highly possible that you may or may not have data in all columns or rows when loading data from source. Consider the following scenario if you have empty value or spaces only (generally Fixed width File has spaces when no data found in the column)

    With SSIS when any source column of string data type (i.e. varchar, nvarchar, text, ntext ... etc.) mapped to non-string data type and data coming from source has blank values or Spaces then most likely DataFlow will through an error. DTS always convert blank string to NULL but SSIS does not do that automatically. In SSIS you have to write expressions to convert blank values or spaces to proper NULL.

    MS DTS Migration Wizard does not support NULL handling and you will have to modify Data Flow to take care various issues related to NULL. Good news is all tedious and time consuming work will be done for you if you use DTS xChange to Migrate DTS Packages. Please review the following examples how DTS xChange helps you to save significant amount of development/testing time by automatically implementing NULL handling.

    Check the following figures which show some sample data which requires proper NULL Handling.

    DTS to SSIS Migration/Conversion
    Figure-2: NULL handling issue for delimited Flat File

    DTS to SSIS Migration/Conversion
    Figure-3: NULL handling issue for Fixed-Width Flat File

    Expressions

    The following table shows various expressions generated by DTS xChange. Expression is only generated if column needed NULL Handling.

     
    Setting Sample Expression and explanation
    Convert Blank [Numbers] to NULL
    Or
    Convert Blank [Boolean] to NULL
    Or
    Convert Blank [DateTime] to NULL
    Or
    Convert Blank [Text] to NULL
    Or
    Convert Blank [Other] to NULL
    Or
    Convert column values containing only spaces to NULL
    TRIM(CategoryID) == "" ? (DT_STR,255,1252)NULL(DT_STR,255,1252) : CategoryID

    Explanation: If source column value is blank then convert to NULL otherwise use same source value
    Trim extra spaces for Boolean Value TRIM(Discontinued) == "" ? (DT_STR,255,1252)NULL(DT_STR,255,1252) : TRIM(Discontinued)

    Explanation: Trim value if Target is BOOLEAN and source column value is TEXT.  If you store True/False value in Fixed width file then Trim it so you don't carry over extra spaces. (See Figure-3 : Last column is defined as 5 characters but some times when you have "True" value it only uses 4 character and 5th character is <space>. This creates problem in SSIS unless you trim additional spaces.

    Below is the screenshot of sample Dataflow converted using NULL Handling.
     

    DTS to SSIS Migration/Conversion
    Figure-4: NULL handling issue for Fixed-Width Flat File

     
    Additional Reference:
     DTS to SSIS Help Reference Derived Column Transformation
     DTS to SSIS Help Reference Integration Services Expression Reference
     

    [TOP]

    2.5.11 Codepage Settings

    CodePage Setting options can be used if your source system has data stored in different language (e.g. other than ANSI Latin Settings - Codepage 1252). By default SSIS uses 1252 CodePage to translate source data.

    Do not modify codepage settings if you are not sure about source system settings. Default option works fine for most cases. But for example if your source system has data stored in Japanese then you have to find appropriate code page number to translate Japanese characters (e.g. 932) and enter in the DefaultCodePage field.

     
    DTS to SSIS Migration/Conversion
    Figure-1: CodePage Settings

    Default CodePage:
    Enter the codepage number which will be used to translate source/target data when "Always Use DefaultCodePage for Non-SQL Server Source or Target" option is checked (see next two options).

    Always use Default CodePage for Non-SQL Server Sources:
    This setting will force SSIS to use DefaultCodePage number to translate source characters for Non-SQL Server (i.e. ORACLE, DB2 ...). This setting insures that when CodePage information is not available from source, DefaultCodePage will be used instead of throwing error.

    Always use Default CodePage for Non-SQL Server Targets:
    This setting will force SSIS to use DefaultCodePage number to translate target characters for Non-SQL Server (i.e. ORACLE, DB2 ...). This setting insures that when CodePage information is not available from target, DefaultCodePage will be used instead of throwing error.

    Always use Default CodePage for ExecuteSQL Task:
    This setting will force SSIS to use DefaultCodePage number for any converted ExecuteSQLTask.

    Always use Default CodePage for Flat File Connections:
    This setting will force SSIS to use DefaultCodePage number for any Flat File Connections.

    Additional Reference:
     DTS to SSIS Help Reference Code Page Identifiers
     DTS to SSIS Help Reference CodePage Supported by Windows
     

    [TOP]

    2.5.12 Handle Unsupported Data Providers

    SSIS is completely re-written and significantly different in many ways. Some Data Providers which used to work fine with DTS may not work as expected or may not work at all in SSIS. DTS xChange gives you intelligent warning message if Data Provider you are using is not in the Supported list. If your Driver is not in the supported list doesn't mean it will not work but its not officially tested by SSIS Team at Microsoft.
     

    DTS to SSIS Migration/Conversion
    Figure-1: Handle unsupported Data Providers


    Check for 64bit support:
    Check this option if you are planning to run SSIS packages on 64bit machine.

    Automatically replace SQLOLEDB to SQL Native Client:
    Check this option if you want to replace all your SQL Server connections from DTS Package to use new SQL Native Client driver.
     


    When you perform migration and if your connection is using Data Provider which is not in the compatibility list then you will be prompted to select new driver or continue with old driver (See Figure-2).

    DTS to SSIS Migration/Conversion
    Figure-1: Handle unsupported Data Providers


    Compatibility List of Data Providers

    The following is not a definitive list of all data providers, and not all data providers on this list have been tested by Microsoft with SSIS. Only current Beta or shipping products are listed. Information about third-party products was provided by the product vendors and could not be independently verified.
    Data
    source
    Released
    by
    Data-access
    API
    Supported database
    versions
    Vendor
    support
    with
    SSIS?
    64-bit
    support?
    SQL Server Microsoft OLE DB 2000 and later
    versions
    Y x64,
    IA64
    SQL Server Microsoft ADO.NET 2000 and later
    versions
    Y x64,
    IA64
    SQL Server Microsoft ODBC 2000 and later
    versions
    Y x64,
    IA64
    SQL Server Attunity OLE DB 2000 and later
    versions
    Y  
    SQL Server DataDirect OLE DB 2000 and later
    versions
    Y  
    DB2 Microsoft OLE DB All DRDA-compliant versions Y x64,
    IA64
    DB2 IBM OLE DB z/OS and UDB 7.0
    and later, AIX 5.0
    and later, AS400 4.5
    and later versions
    Y  
    DB2 IBM ADO.NET DB2 UDB 9.0 N  
    DB2 IBM ODBC z/OS and UDB 7.0
    and later versions

    AIX 5.0 and later
    versions, AS400 4.5
    and later versions

    N N
    DB2 Attunity OLE DB 6.1, 7.x, 8.0 on
    z/OS

    7.x, 8.0 on UNIX

    7.x, 8.0 on Windows

    Y  
    DB2/400 Attunity OLE DB On AS/400 5.1 and
    later versions
    Y  
    DB2 DataDirect OLE DB z/OS and UDB 7.0
    and later versions

    AIX 5.x

    AS400 4.5 and later
    versions

    N  
    DB2 HIT OLE DB z/OS and UDB 8.0
    and later versions

    AIX 5.x, AS400 4.5
    and later versions

    N  
    DB2 DataDirect ADO.NET z/OS and UDB 7.0
    and later

    AIX 5.x, AS400 4.5
    and later versions

    Y  
    DB2 ETI Bulk Load 8.0 and later
    versions
    Y  
    DB2¹ Persistent Data Flow Component

    Bulk Write & Bulk Read

    - N  
    Oracle Microsoft OLE DB 7.3.4 and later
    versions²
    Y N
    Oracle Microsoft ADO.NET 8.0 and later
    versions
    Y x64,
    IA64
    Oracle Oracle Corp OLE DB 8i and later versions Y x64,
    IA64
    Oracle Oracle Corp ADO.NET 8i and later versions Y x64,
    IA64
    Oracle Oracle Corp ODBC 8i and later versions N  
    Oracle Microsoft ODBC 8i and later versions N  
    Oracle Attunity OLE DB 9i and later versions Y  
    Oracle DataDirect OLE DB 8i and later versions Y  
    Oracle DataDirect ADO.NET 8i and later versions Y  
    Oracle ETI Bulk Load 9.0 and later
    versions
    Y  
    Oracle Persistent Data Flow Component

    Bulk Write

    8i and later versions N  
    SAP¹ Microsoft ADO.NET R/3 4.6C and later
    versions
    Y  
    SAP Theobald OLE DB R/3 Y  
    Office Access Microsoft OLE DB 2003 and earlier
    versions
    Y  
    Office Excel Microsoft OLE DB 2003 and earlier
    versions
    Y  
    Office 2007 Microsoft OLE DB 2007 N  
    Sybase Sybase OLE DB 11.5 and later
    versions
    N  
    Sybase Sybase ADO.NET 11.5 and later
    versions
    N  
    Sybase Attunity OLE DB 12.0 and later
    versions
    Y  
    Sybase DataDirect OLE DB 11.5 and later
    versions
    Y  
    Sybase DataDirect ADO.NET 11.5 and later
    versions
    Y  
    Informix IBM OLE DB 7.3 and later
    versions
    N  
    Informix Attunity OLE DB 7.31, 9.x, 10 Y  
    Informix¹ Persistent Data Flow Component

    Bulk Write & Bulk Read

    - N  
    Teradata Teradata OLE DB 2.6 and later
    versions
    N  
    Teradata Teradata ADO.NET 2.6 and later
    versions
    N  
    Teradata ETI Bulk Load 2.5 and later
    versions
    Y  
    Teradata ETI Bulk Extract 2.5 and later
    versions
    Y  
    FoxPro Microsoft OLE DB 8.0 and later
    versions
    N  
    File DBs Microsoft OLE DB Any Jet 4.0– compatible version N  
    Adabas Attunity OLE DB 6.2.2 to 7.4.x on
    z/OS

    3.3 to 5.1 on Open
    Systems (UNIX,
    Windows, OpenVMS)

    Y  
    CISAM Attunity OLE DB On UNIX Y  
    DISAM Attunity OLE DB On UNIX, Linux, and
    Windows
    Y  
    Ingres II Attunity OLE DB 2 to 2.56 Y  
    Oracle Rdb Attunity OLE DB 7.1.x, on OpenVMS
    Alpha and Integrity
    (Itanium)
    Y Y (HP
    Integrity)
    RMS Attunity OLE DB On OpenVMS Alpha
    and Integrity
    (Itanium)
    Y Y (HP
    Integrity)
    Enscribe Attunity OLE DB On HP NonStop G-
    Series and H-Series
    Y Y (HP
    Integrity)
    SQL/MP Attunity OLE DB On HP NonStop G-
    Series and H-Series
    Y Y (HP Integrity)
    IMS/DB Attunity OLE DB 6.1 and later
    versions
    Y  
    VSAM Attunity OLE DB On z/OS 1.1 and
    later versions
    Y  
    LDAP Persistent ODBC All LDAP-compliant
    servers
    N Y
    Note:  The following is not a definitive list of all data providers, and not all data providers on this list have been tested by Microsoft with SSIS. Only current Beta or shipping products are listed. Information about third-party products was provided by the product vendors and could not be independently verified.

    Soure : Microsoft.com  [http://technet.microsoft.com/en-us/library/bb332055.aspx]

    Last Updated : 4/1/2008

    ¹This product is in beta.

    ²Although this provider can connect to and use versions of Oracle up to and including Oracle 10gR2, it does not support database constructs (such as BLOB/CLOB data types) introduced after Oracle 8.0).

    [TOP]

    2.5.13 DataFlow Options

    DTS to SSIS Migration/Conversion
    Figure-1: Handle unsupported Data Providers


    Truncation Row Disposition Option:
    You can select any of the following option to change the row truncation disposition option. This option determines what action should be performed when data is truncated. Default action is Fail Component.

    Available options are :

    1. RD_FailComponent
    2. RD_IgnoreFailure
    3. RD_RedirectRow

    Command Timeout:
    You Enter number of seconds before source adapter query/command times out. Enter 0 if you don't want timeout.

    Delay Validation:
    If you are working in disconnected mode and you don't want to validate dataflow check this option.

    [TOP]

    2.5.14 Other Options


    DTS to SSIS Migration/Conversion
    Figure-1: Other options

    Package Protection Level:
    You can use this option to change protection level of converted package. Please refer MSDN help to learn more about each protection level and pros/cons.

    Reference URL : http://technet.microsoft.com/en-us/library/ms141747.aspx

    Always Use Direct SQL for ExecuteSQL Task:
    By default DTS xChange takes some smart decision and use expression based variables for certain type of Parameterized SQL Statements which is recommended best practice to avoid any Provider specific parameters handling. In some case if you don't want to create expression based variables and only use direct SQL Statements then check this option.

    ScriptTask Language:
    This option is only valid if you select Target Platform SQL Server 2008. For SQL Server 2005 You have only one option VB.net and this option will be grayed out. In SQL 2008 You can write script task in C# to VB.net. Depending on what language is selected in this dropdown DTS xChange will create code in the selected language for Script Task during migration.

    [TOP]

    2.6 Verify and Migrate Packages Screen

    DTS to SSIS Migration/Conversion
    Figure-1: Verify and Migrate

    [TOP]

    2.7 View Migration and Validation Log Screen

    After migration is completed you can review Migration Log and Validation Log.

    What is Migration Log?

    Migration Log includes

    Informational messages, Migration related errors and warnings reported by DTS xChange.

    DTS to SSIS Migration/Conversion
    Figure-1: Migration Log

    What is Validation Log?

    Validation Log includes any errors or warnings reported by SSIS Runtime engine.

    Make sure you correct any validation errors after migration in order to run your package successfully. Validation errors are not necessarily problems with conversion but most of the time its problem with connection string, permission issues, file not found etc.

    Validation errors (red x sign) are critical to fix. Until you fix all validation errors your package may not run.
    Validation warnings (yellow exclamation sign) are non-critical and mostly fixing warnings may increase performance of SSIS package. If you do not fix warnings your package will still continue to run but you may not get full performance.

    DTS to SSIS Migration/Conversion
    Figure-2: Validation Log

    [TOP]

    2.8 View Migration History Screen

    To view any log for previous migration click "Log" option on the Welcome screen of DTS xChange and it should open the following screen. You can select the item and click next or double click to view the detailed log.

    DTS to SSIS Migration/Conversion
    Figure-1: Migration history

    [TOP]

    3. DTS Profiler Reference

    3.1 About DTS Profiler

    Before your migration project starts, find out quickly what you're about to jump into. DTS xChange offers a detailed profiling tool that allows you to scope out your DTS migration project. It's perfect for project managers, DBA managers, consultants or anyone interested in determining how much of an effort the migration is going to be.

    Note:
    Profile : Quick Start video of DTS Profiler

    [TOP]

    3.2 Option Screen

    After launching DTS xChange you will see option screen.
     
    DTS to SSIS Migration/Conversion
    Figure: Option screen


    Migrate:
    This option will launch wizard for DTS package migration. Using this option you can convert DTS packages to SSIS 2005/2008. It will also apply series of best practices during migration and at the end of the migration you will see full migration log and validation report of converted packages for possible errors/warnings.

    Note:
    Using Trial version you can convert maximum 3 packages. If you are converting DTS package which is calling other package(s) then parent package and child package(s) will be counted as separate migrations.

    Profile:
    This option will launch DTS Package Profiler Wizard. Profiler option is helpful to find out how many packages you have and how complex they are to convert manually or using DTS xChange. DTS Profiler will generate detailed report with package and task level break down which you can export to PDF or Excel.

    Reports:
    This option will launch Report Viewer Application. This is the place where you can view several predefined reports for SSIS package auditing.

    Log:
    This option will show history of all previous migration occurred on current machine where you have installed DTS xChange.

    Support/Bug:
    You can click this URL if you have any issue using DTS xChange. You can contact support by phone/email or by visiting http://www.pragmaticworks.com/support

    Check for update:
    DTS xChange has auto update feature which will check every couple of days or everytime you launch DTS xChange depending option you have set. If product update is found then you will see product update dialog box as below.

    DTS to SSIS Migration/Conversion
    Figure: Option screen


    Registration:
    Click this option to view license information of your product. You can use same screen to activate or deactivate license of your product.

     

    [TOP]

    3.3 Select Source Screen

    DTS to SSIS Migration/Conversion
    Figure: Select Source

    Specify where DTS package(s) are stored

    Source SQL Server
    If your DTS packages stored on SQL Server 2000 or SQL Server 2005 (under legacy mode) then select this option. You can specify instance name or IP.

    Examples:
  • MYSERVER\SQLINST1
  • 192.168.2.3
  • (local)
  • MYSERVER\DEVINST1,1433
  • Source File System
    If DTS packages are stored as COM Structured Storage files (*.dts) then select this option. You have to browse folder location where dts files are stored. On the next screen you can select packages found under selected folder.

    [TOP]

    3.4 Select Packages Screen

    This screen will list all packages for selected source location. Click on the first column to sort packages by selection status and click on second column to sort by package name.
     
    DTS to SSIS Migration/Conversion
    Figure: package selection

    Display Associated Job Detail:
    This option will show four additional columns related associated job detail which includes Job Name, last execution date, creation date and last execution status.

    Search for:
    This option will filter package list based on search criteria (e.g. to list all packages with word "Test" enter Test in the filter box and click filter icon). This option is very handy when you have may packages and you don't know exact name of the package.

    Copy to clipboard:
    Click this button to save content of top grid into clipboard in Tab delimited values (you can copy/paste content to excel)

    Save report:
    Click this button to save content of top grid into Tab delimited values (you can copy/paste content to excel)

    [TOP]

    3.5 Enter Estimate Screen

     
    DTS to SSIS Migration/Conversion
    Figure: Migration estimate

    Estimate by task type
    This matrix has all possible DTS task type listed in the grid view. This table contains two estimate columns with suggested numbers but you can change it if you want. This table has three columns as below.

    Task Name :
    This column has common DTS task types. Any thing in the Green column will be converted 100% by DTS xChange. Anything in the yellow will be partially converted by DTS xChange which means it may or may not work properly after conversion and some manual tweaks may require to make it working. Anything in the red means there is no equivalent task in SSIS or DTS xChange can not convert that task so you have manually re-write that task to native SSIS using your own approach.

    Est. Hrs (Manual) :
    This column lists estimated time required to convert associated task type using manual approach.

    Est. Hrs (DTS xChange) : This column lists estimated time required to convert associated task type using DTS xChange. Most of the tasks will be automatically converted. Green cells are read only because DTS xChange converts Green Task Type 100%. Anything in the yellow or red is editable and you can enter your own estimate.

    Other Time - Manual approach (Per Package)
    This field allows you to enter estimated overhead time per package when you do migration manually without using DTS xChange. Usually this overhead time includes Testing and Troubleshooting time, variable migration and connection migration time.

    Other Time - Manual approach (Per Package)
    This field allows you to enter estimated overhead time per package when you do migration using DTS xChange. This time will be usually less than previous field because less troubleshooting/testing required compared to manual approach when you convert packages using DTS xChange.

    Development Cost
    Enter Average Hourly development cost for developer working on migration project.

    Additional Features
    If you want to add estimate for applying certain best practices when you go though manual approach select select one or more options here and enter time to implement each best practice feature in your converted package.

    [TOP]

    3.6 Profiler Summary Report

    DTS to SSIS Migration/Conversion
    Figure: Profiler Report - Top Summary Section

     

    DTS to SSIS Migration/Conversion
    Figure: Profiler Report - Task Distribution Summary

     

    DTS to SSIS Migration/Conversion
    Figure: Profiler Report - Connection Distribution Summary

     

    DTS to SSIS Migration/Conversion
    Figure: Profiler Report - Package/Task Summary

    [TOP]

    3.7 Profiler Detail Report

     

    DTS to SSIS Migration/Conversion
    Figure: Profiler Report - Task Attributes

    If you want to generate very detailed profiler report with all task attributes then make sure you select "Generate detailed report" option on the DTS Migration Estimate screen.

    [TOP]

    4. Auditing and Monitoring Framework Reference

    4.1 About Auditing and Monitoring Framework

    DTS xChange offers easy way to add rich auditing features in converted packages using custom auditing framework developed by Pragmatic Works. This Auditing  Frameworks uses all Native SSIS features and it can track packages in real-time. Auditing Framework comes with lots of predefined reports which can give you some valuable information.

    You can audit the following information using reports provided with Auditing Framework (Note: Use Report Viewer Application to view auditing data.)

    How does Auditing Framework work?

    The following changes will be made to SSIS package when you apply auditing framework. These changes are done based on options you select on the auditing screen.

    Here is the basic architecture of Auditing framework.

    DTS to SSIS Migration/Conversion
    Figure: Auditing Framework architecture

    DTS to SSIS Migration/Conversion
    Figure: Auditing Database Objects v3

    To view reports you have to use "Reports" option found on the main screen.

    DTS to SSIS Migration/Conversion
    Figure: View auditing reports

    There are seven inbuilt reports are shipped this version and more will be added in the future release.

    Report Name Description
    SSIS Execution Dashboard This dashboard gives one place view of most common counters of SSIS package execution.
    Package Execution Trend This report provides many useful information about trend of package runtime, task runtime and errors/warnings.
    Errors/Warnings Provides detailed error/warning report including package level errors (package level errors not listed in any other report)
    Recent Executions Provides information of running packages/tasks and already completed executions.
    Running Packages Provides real time information of currently running packages and tasks.
    Extract/Load Detail Provides extract/load detail (e.g. row count, source/target information, query, file name ...) about each dataflow in each package execution.
    Extract/Load Trend Provides graphical view of extract and load trend over several years, weeks, months and days.

    [TOP]

    4.2 SSIS Execution Dashboard

    Dashboard report provides the following information
    1. Running packages (Last N days/weeks/months)
    2. Completed packages (Last N days/weeks/months)
    3. Top 20 slowest packages (Last 90 days)
    4. Top 20 fastest packages (Last 90 days)
    5. Top 20 minimum used packages (Last 90 days)
    6. Top 20 maximum used packages (Last 90 days)
    7. Data extract summary (Last N days/weeks/months)
    8. Data load summary (Last N days/weeks/months)

    Where Last "N" days/weeks/months can be changed by specifying interval parameter.
     

    DTS to SSIS Migration/Conversion
    Figure-1: Package Execution Dashboard 

     

    DTS to SSIS Migration/Conversion
    Figure-2: Package Execution Dashboard

     

    DTS to SSIS Migration/Conversion
    Figure-3: Package Execution Dashboard  

    [TOP]

    4.3 Package Execution Trend Report

    Package Execution Trend report provides the following information
    1. Package performance trend in graphical and tabular form
    2. Package and Task Performance break down for N number of Days/Weeks for selected time frame
    3. Error/Warning trend analysis in graphical way
    4. Execution detail in tabular format which includes package name, run time, error/warning count and row count
       
    DTS to SSIS Migration/Conversion
    Figure: Package Execution Trend Report

    [TOP]

    4.4 Errors/Warnings Report

    Error/Warning report provides the following information
    1. All Packages and Tasks with error or warning
    2. Start Time and End Time of package and Task
    3. Errors/warning details for package execution between selected time frame
       
    DTS to SSIS Migration/Conversion
    Figure: Error/Warning Report

    [TOP]

    4.5 Extract/Load Detail Report

    Extract/Load Detail report provides the following information
    1. All Dataflow summary fore Packages executed between selected time frame
    2. Start Time and End Time of package and Data Flow Tasks
    3. Source and Target Detail of each Data Flow which includes SQL Query, Server or File Name, Database Name and User Name
       
    DTS to SSIS Migration/Conversion
    Figure: Extract/Load Detail Report

    [TOP]

    4.6 Extract/Load Trend Report

    Extract/Load Trend report provides the following information
    1. Extracted and Loaded record count trend for selected time frame
    2. Multiple level of row count trend analysis for Package, DataFlow and source/target
    3. Component Type, Data Object Name, Package Name and many other dataflow related information
       
    DTS to SSIS Migration/Conversion
    Figure: Extract/Load Trend Report

    [TOP]

    4.7 Running Packages Report

    Running Packages Detail report provides the following information
    1. Package and Task Runtime
    2. Error/Warning displayed under related task
    3. Extracted/Loaded rows (applicable to DataFlow)
    4. User Account under which package was executed
    5. Machine Name
    6. Interactive or Non-Interactive mode
       
    DTS to SSIS Migration/Conversion
    Figure: Recent Execution Detail Report

    [TOP]

    4.8 Recent Executions Report

    Recent Execution Detail report provides the following information
    1. Package and Task Runtime
    2. Error/Warning displayed under related task
    3. Extracted/Loaded rows (applicable to DataFlow)
    4. User Account under which package was executed
    5. Machine Name
    6. Interactive or Non-Interactive mode
       
    DTS to SSIS Migration/Conversion
    Figure: Recent Execution Detail Report

    [TOP]

    5. Migration Reference

    5.1 Tasks

    5.1.1 Data Pump Task

    DTS xChange will migrate your DTS DataPump to DataFlow task in SSIS. Here is the list of supported mapping types in DataPump which will be migrated without any problem. Here is the list of mapping types which won't be migrated properly with DTS xChange.

    Converting ActiveX Script Transformation

    There are many approaches to convert ActiveX script to SSIS equivalent code. Most common approach is combination of Derived Column and Script Component. Most of time you can use Derived Column if you have simple transformation (e.g. Upper, Trim, Substring) without any complex logic. if you have complex transformation which is not possible with Derived Column then you can use script component and write VB.net/C# code.

    Using Derived Column

    You can use Derived column component to add new column or modify existing column in the pipeline. Derived column is faster than Script Component so if possible you should avoid scripting unless its required. Derived Column component has many predefined functions which you can use for transformation.

    e.g.

    String functions (e.g. Upper, Lower, Substring ...)
    Example(s)

    1. LOWER([ProductName])
    2. LTRIM([ProductName])
    3. SUBSTRING([ProductName],1,3)

    DataType conversion functions
    Example(s)

    Syntax: <conversion function><expression>

    1. Convert String to DateTime
    (DT_DBTIMESTAMP) ("12" + "/31/" + "1900")

    2. Convert non unicode string to unicode string
    (DT_WSTR, 255)[ProductName]
    Note: 255 is length of expression output.

    3. Convert unicode string to nonunicode string
    (DT_STR, 255,1251)[ProductName]

    IF... Else (Use Ternary Operator for If Else type expression)

    Syntax:  <expression> ? <true part> : <false part>

    Example(s):
    1. If ProductName is Blank then replace with "<UNKNOWN>"
    TRIM([ProductName]) == "" ? "<UNKNOWN>" : [ProductName]


    Here is the example how you can ad new column which represents current time. Under "Derived Column" you can choose either "Add New Column" or "Replace existing"



    Using Script Component

    If you decide to use script component then first step you have to do is select input columns and define output columns. In most of cases   you don't have to define output columns unless you are adding new column in the pipeline. In the below example new column called "RecordTimeStamp" is added. Anything defined in the Input or Output column list can be accessed inside Script component for READ or WRITE (this can be change by changing column usage property) 

    Select input columns which will be used inside script component. Define Usage (i.e. READ/WRITE/READWRITE)



    Add new column in the Output Columns (See below).

    After adding column in the output column collection edit the script.

    Following table explains how to convert various patterns found in ActiveX Script to SSIS
     

    DataPump ActiveX Script Conversion Examples

    DTS

    SSIS

    Example 1
    DTSDestination("ProductID") = DTSSource("ProductID") No need to convert because there is no transformation involved in this example. Just map ProductID <-> ProductID in the Destination Adapter. If you have simple pattern like this then just remove from the script and also make sure you remove from Script Component Input Columns to improve performance.
    Example 2
    If DTSSource("TransCode") = "ACT" Then
    	DTSDestination("TransDescription") = "Acct Trans"
    Else
    	DTSDestination("TransDescription") = "UNKNOWN"
    End If
    In this example TransDescription column is derived from value of TransCode. Pattern like this when you don't have exact mapping of source column to target column or Target column value is derived based on one or more source column values then the best way is use derived column. You can also use script component but give first preference to Derived Column if possible because its faster compared to script component. Some times you have to use Script component because of complexity of code. Derived column is good for simple expressions.

    Using Derived Column

    Step 1: Add Derived Column Component in the pipeline
    Step 2: Add new column (e.g. MyTransDescription)
    Step 3: Type expression as below

    [TransCode]="ACT" ? "Acct Transaction" : "UNKNOWN"

    Step 4: On the Destination Adapter Mappings screen map MyTransDescription to Target column TransDescription

    Using Script Component

    You can do same thing with Script component but it will be slower than Derived column so if possible give first preference to Derived Column.

    Step 1: Select Input column TransCode (ReadOnly)
    Step 2: Add New Output Column "MyTransDescription" under Input Output Columns tab and specify data type and length of the column.
    Step 3: Type the following script
    If Row."TransCode" = "ACT" Then
    	Row.MyTransDescription = "Acct Trans"
    Else
    	Row.MyTransDescription = "UNKNOWN"
    End If

    Step 4: On the Destination Adapter Mappings screen map MyTransDescription to Target column TransDescription
     

    Example 3
    If DTSSource("Discontinued") = 0 Or _
    	DTSSource("Discontinued") Is Null Then
    
    	DTSDestination("UnitPrice") = DTSSource("UnitPrice")+50
    Else
    	DTSDestination("UnitPrice") = Null
    End If
    If Row.Discontinued = 0 Or _
    	Row.Discontinued_IsNull Then
        
    	Row.UnitPrice = Row.UnitPrice + 50
    Else
        Row.UnitPrice_IsNull = True
    End If
    Example 4
    DTSDestination("ProductName") = UCase(DTSSource("ProductName"))
    Row.ProductName = UCase(Row.ProductName)
    Example 5
    DTSDestination("RecordTimeStamp") = Now() In this example source table doesn't have RecordLoadTimeStamp column and value for target field is generated at run time. For pattern like this you have to either use "Derived Column" component or use Script Component.

    Using Derived Column

    If you use derived column to add or modify column in the pipeline then


    Using Script Component

    If you decide to use script component then you have to add new column in the Output Columns (See below).

    After adding column in the output column collection edit the script as below.

    Row.RecordTimeStamp = DateTime.Now()
     

    [TOP]

    5.1.2 Data Driven Query Task



    Purpose

    The Data Driven Query task allows you to perform flexible, Transact-SQL based operations on data, including stored procedures and INSERT, UPDATE or DELETE statements. For each row in a source rowset, the Data Driven Query task selects, customizes, and executes one of several SQL statements. You select which statement to execute via a constant return value set in a Microsoft® ActiveX® script transformation. Based on the return constant you use in the script, one of four different parameterized SQL statements that you create may be executed for each source row.

    Summary

    DTS xChange does not convert Data Driven Query to native SSIS but it will be converted to embedded DTS object. Data Driven Query Task has been discontinued in SSIS and you may want to rewrite it using native SSIS tasks and components. This section will cover some detail on how to use native SSIS components to convert Data Driven Query Task manually.

    Step-By-Step Example

    The following example will guide you step-by-step how to convert DDQ task to Data Flow and apply various transformations. Following items will be covered in this example

    Image from help
    Figure-1: Original sample DTS package

    Image from help
    Figure-2: DDQ task source tab

    Image from help
    Figure-3: DDQ task binding tab

    Image from help
    Figure-4: DDQ task activex script transformation tab 

    Image from help
    Figure-5: DDQ task queries tab 

    Image from help
    Figure-6: DDQ task Lookup queries tab 
     

    Challenging part of converting DDQ Task is ActiveX Script Transformation (see below code). If you observe the source code you will notice that Main function is returning 3 different status based on certain condition

    In our example

    '**********************************************************************
    '  Visual Basic Transformation Script
    '**********************************************************************
    '  Copy each source column to the destination column
    Function Main()
    	If  DTSSource("CategoryID") =1 or DTSSource("CategoryID") =2 Then '//For Category 1,2 : Insert
    		'//Special mapping
    		DTSDestination("ProductName") = UCase(DTSSource("ProductName"))
    
    		'//Copy column mappings
    		DTSDestination("ProductID") = DTSSource("ProductID")
    		DTSDestination("SupplierID") = DTSSource("SupplierID")
    		DTSDestination("CategoryID") = DTSSource("CategoryID")
    		DTSDestination("QuantityPerUnit") = DTSSource("QuantityPerUnit")
    		DTSDestination("UnitPrice") = DTSSource("UnitPrice")
    		DTSDestination("UnitsInStock") = DTSSource("UnitsInStock")
    		DTSDestination("UnitsOnOrder") = DTSSource("UnitsOnOrder")
    		DTSDestination("ReorderLevel") = DTSSource("ReorderLevel")
    		DTSDestination("Discontinued") = DTSSource("Discontinued")
    
    		'//Get CategoryName from Lookup 
    		DTSDestination("CategoryName") = DTSLookups("lookupCategory").Execute(DTSSource("CategoryID"))
    
    		Main = DTSTransformstat_InsertQuery
    	ElseIf DTSSource("CategoryID") =3 Then  '//For Category 3 : Update Price by 2% 
    		Main = DTSTransformStat_UpdateQuery
    	Else  '//For other category dont do anything
    		Main = DTSTransformstat_SkipRow
    	End If
    End Function

    DTS xChange can convert everything except DDQ Task. Perform the following actions to replace DDQ task with DataFlow

    Step-1 : Setup Test Database
    This sample uses northwind database. Please download the northwind database script and run in a new Sql Server Management Studio query window to your local instance (or select different server). This script will create northwind database and populates sample data.
    Step-2 : Migrate DTS package using DTS xChange
    Migrate sample dts package using DTS xChange. It will migrate all tasks except DDQ.
    Step-3 : Delete DDQ and add DataFlow task
    Delete DDQ Task container and drop new DataFlow task in the package surface. Rename DataFlow to "Process Products". Attach "Create Table" task with Data Flow task.
    Step-4 : Add OLEDB source
    - Click on the DataFlow and drop OLEDB Source Adapter from the toolbar as displayed in the Figure-2.
    - Double click on the source and select CONN_SRC in the connection dropdown.
    - Select "Products" table in the Table or View Dropdown.
    Step-5 : Add derived column
    Add derived column component and name it "Special Transformation". Add new "Replace 'ProductName'" expression as below. This expression will change ProductName to upper case. Connect OLEDB Source with derived column (See final figure).
     
    Image from help
    Figure-7: Replace special transformation with Derived column task
    Step-6 : Add conditional split
    Add conditional split component. Attach Derived column with conditional split as shown in the final figure. Double click on the conditional split to configure various outputs based on conditions. If you observe the ActiveX script above you will notice that we have total 2 IF conditions and one default (i.e. ELSE block). We will do the same thing here in conditional split and give it meaningful name for each output.
    • Create 2 output as shown below. Notice that SSIS uses expression language very similar to C++ or C# language syntax.
    • Enter "Skip Rows" in the default output.
    • Click OK to save changes
    Image from help
    Figure-8: Replace special transformation with Derived column task
    Step-7 : Add Lookup
    DDQ Task ActiveX Script Transformation is using Lookup to find CategoryName using source CategoryID. We can accomplish similar behavior using Lookup Component found in SSIS but you will notice that in SSIS lookup you don't have to pass parameter.
    • Drop Lookup component
    • Attach Conditional Split component with Lookup component. As soon as you connect arrow to Lookup component you will be prompted to select Input (See Figure-9).
    • Select "Insert Rows" output and click ok.
    • Double click Lookup component to configure
    • Enter the query as displayed in the Figure-10
    • Click on the columns tab and drag CategoryID column from Input columns to Lookup columns.
    • Check CategoryName column (See Figure-11)
    • Click OK to save changes
    Image from help
    Figure-9: Replace special transformation with Derived column task

    Image from help
    Figure-10: Replace special transformation with Derived column task

    Image from help
    Figure-11: Replace special transformation with Derived column task

     

    Step-8 : Add OLDEB destination
    • Drop OLEDB Destination adapter. Rename to "Insert Products"
    • Double click to configure properties
    • Select CONN_DEST in the connection manager dropdown.
    • In the Table/View dropdown select "PRODUCTS_DDQ_TEST" table. If table not found then you might have to run Execute SQL task to create missing table.
    • Attach Lookup component with OLEDB Destination.
    Step-9 : Add OLEDB Command
    OLEDB command can be used if you want to execute SQL Statements for each row in the input pipeline.
    • Drop OLEDB Command component. Rename to "Update Products"
    • Double click to configure properties
    • Select CONN_DEST in the connection manager dropdown.
    • On the Component properties tab enter the following Sql Statement in the SqlCommand Property.
       
      UPDATE [Northwind].[dbo].[Products_DDQ_TEST]
      SET [UnitPrice]=[UnitPrice] + 0.01
      Where [ProductID]=?

    • On the column mappings tab attach ProductID column with Param_0 (See Figure-12).
    • Click OK to save changes
    • Attach Conditional Split with OLEDB command. When prompted select "Update Rows" from the Input list (See Figure-9)
    Image from help
    Figure-11: Replace special transformation with Derived column task
     
    Step-10 : Final Control Flow
    Image from help
    Figure-12: Converted sample SSIS package

    Click on Debug -> Start Debugging (or F5) to run the package


    Reference:
    Download Northwind Database Script
    Download Sample Packages (DTS and SSIS)

    [TOP]

    6. Common Errors/Warnings Reference

    6.1 Errors

    6.1.1 E0001 - Cannot Aquire Connection From Connection Manager

    Severity: Low

    Description:


    This is the most common error you may see after migration. Here is the sample error you may see in the validation log

    Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "OLEDB_NORTHWIND_1" fail.

    This error can occur for many reasons. Here are some possible reasons
    - One or more attribute of your connection string is invalid.
    - Server name/file path specified in the connection string is invalid/offline or not accessible due to network or firewall issue.

    Recommended Action:

    - In the dataflow right click on the source adapter and select "Edit..."
    - Select Columns tab
    - Uncheck unnecessary columns from the "Available External Columns" list.
    - Click OK to save changes
    - Repeat above steps for all columns with similar warning. Check "Error List" for any possible Warnings/Errors

    [TOP]

    6.1.2 E0002 - Invalid class string

    Severity: High

    Description:


    This error occurs when one or more DTS components not registered on the machine where you running DTS xChange/DTS Profiler. This error will prevent package loading and you will not be able to profile or migrate package until you install required DLLs.

    Recommended Action:

    - Open the DTS package causing the issue and try to find any Custom Task. OLAP Task is the most common Custom task which is not installed by default in that case you may receive this error.
    - Make sure you have DTS Runtime installed properly. If you dont have DTS Runtime then please use the following Links to download appropriate version of DTS Runtime.
    -
    Click here to learn more about installation requirements

    Note:
    If above test failed and you are getting components missing error then please run the SQL Server 2005/2008 setup and install Backward Compatibility components or download from the following URL (For 32 bit OS use x86 link).

    Microsoft SQL Server 2005 Backward Compatibility Components
    The SQL Server Backward Compatibility package includes the latest versions of Data Transformation Services 2000 runtime (DTS), SQL Distributed Management Objects (SQL-DMO), Decision Support Objects (DSO), and SQL Virtual Device Interface (SQLVDI). These versions have been updated for compatibility with both SQL Server 2005 and SQL Server 2008 and include all fixes shipped through SQL Server 2000 SP4 and SQL Server 2005 SP2.

    X86 Package (SQLServer2005_BC.msi) - 11273 KB
    X64 Package (SQLServer2005_BC.msi) - 18569 KB
    IA64 Package (SQLServer2005_BC.msi) - 23510 KB

    [TOP]

    6.2 Warnings

    6.2.1 W0001- Truncation may occur

    Severity: Low

    Description:


    This warning occurs when you have different column size in the source and target.

    Recommended Action:

    - In the dataflow right click on the source adapter and select "Show Advanced Editor"
    - Select "Input and Output Properties" tab
    - Expand "<source> output"
    - Expand "Output columns" node
    - Change Length to match with Target column
    - Click OK to save changes
    - Repeat above steps for all columns with similar warning. Check "Error List" for any possible Warnings/Errors

    [TOP]

    6.2.2 W0002- Removing unused columns may increse performance

    Severity: Low

    Description:


    This warning occurs when you have columns selected in the source adapter which are not used anywhere in the transformation or mappings.

    Such unwanted columns increase SSIS buffer size and slow down DataFlow processing.

    Recommended Action:

    - In the dataflow right click on the source adapter and select "Edit..."
    - Select Columns tab
    - Uncheck unnecessary columns from the "Available External Columns" list.
    - Click OK to save changes
    - Repeat above steps for all columns with similar warning. Check "Error List" for any possible Warnings/Errors

    [TOP]

    7. Frequently Asked Questions

    7.1 FAQ - What's new in SSIS 2008

    Here is the list of couple of major changes in SSIS 2008.

    New Script Environment:

    Script Task now supports VB.net and C# both languages. In the previous version of SSIS only VB.net support was there.

    Enhanced SQL Statements:
    Transact-SQL supports the use of a MERGE operation in an SQL statement. The MERGE operation enables you to express multiple INSERT, UPDATE, and DELETE operations in a single statement against a specified target table.

    Change Data Capture (CDC):
    Integration Services includes a new technology called change data capture. This new Database Engine feature captures insert, update, and delete activity that is applied to SQL Server tables. Change data capture also makes the details of these changes available in an easily consumed relational format.

    DataFlow task Improvements:
    New DataFlow engine has smarter thread allocation and processing of our execution trees. Long chains of synchronous transforms are optimized, and most packages will see a performance increase upto 80% on multi-processor machines.

    New Data Profiling Task and Data Profile Viewer:
    The Data Profiling task is a new task in the Integration Services toolbox. You can use this task inside an Integration Services package to profile data that is stored in SQL Server. The information provided by the profile helps you identify potential problems with data quality. The Data Profiling task provides profiles that help identify data quality problems within individual columns and with column relationships:

    Profiles that help identify problems within individual columns
    Profiles that help identify problems with column relationships

    Enhanced Performance and Caching for the Lookup Transformation:
    Performance enhancements to the Lookup transformation include faster cache loading and more efficient lookup operations. These enhancements are possible because of the following features:

    New ADO.NET Components:
    Integration Services now includes the following ADO.NET components:

    New Date and Time Data Types:
    The following new date and time data types are available in Integration Services:

    These new Integration Services data types provide the following benefits:

    New Debug Dump Files:
    You can create debug dump files (.mdmp and .tmp) that provide information about what happens when a package runs. This information can help you in troubleshooting issues that occur when you run the package.

    For more information visit the following URLs

    Source: simple-talk.com - New feature in SSIS 2008
    Source: technet.microsoft.com   - What's New (Integration Services 2008)
    Source: blogs.msdn.com/mattm - What's new in SQL Server 2008 for SSIS - Part one
    Source: blogs.msdn.com/mattm - What's new in SQL Server 2008 for SSIS - Part two
     

    [TOP]

    7.2 FAQ - How to pass parameters to DTS or SSIS package

    Parameterized package means package executed from command line with parameters passed to it. Most common parameters are global variable initial value. Since this is an issue related to command line it has nothing to do with Package migration. When you migrate your SQL Server 2000 Jobs to SQL Server 2005 you might want to review command line changes.

    Parameterized DTS Package - Passing parameters to DTS package from command line
    DTSRun /S "(local)" /N "PkgTest" /A "varFile":"8"="File_001.xls" /E
    
    Note: "8" is DataType ID

    Parameterized SSIS Package - Passing parameters to SSIS package from command line
    DTSExec /SQL "\PkgTest" /SERVER "(local)" /SET "\Package.Variables[User::varFile].Value";"File_001.xls"
    

    Please refer the following URL to get more information on DTExec command line options

    http://msdn.microsoft.com/en-us/library/ms162810.aspx

     

    [TOP]

    7.3 FAQ - How to convert Scripting.FileSystem object of ActiveX Script to native SSIS Task

    Generally developers use Scripting.FileSystem object in ActiveX script task to perform various file system related tasks (e.g. Copy file, Delete file etc.). In SSIS you can perform many file system related common tasks using File System task. You should find out the possibility of replacing ActiveX script using SSIS File System Task. If any task you performing using Scripting.FileSystem is not possible using File System Task (i.e. Check File Exists) then you can use Script Task in SSIS and use System.IO namespace to perform File/Folder related tasks not possible using FileSystem Task.

    You can perform any of the following operations using File System Task

    DTS to SSIS Migrations/Conversion

    If your ActiveX script is using anything other than above listed operations then you might have to use SSIS Script Task and write code using System.IO methods. The following code snippets will show how to perform some of most common file/folder related tasks not possible to implement using File System Task.
     
    Path related functions
    Imports System.IO
    
    Public Class ScriptMain
        Public Sub Main()
            Dim sMyVar As String
    
    	'//Get only file name from a specified path => Returns mydatafile_001.txt
            sMyVar = System.IO.Path.GetFileName("c:\temp\mydatafile_001.txt") 
    
    	'//Get only directory path from a specified path => Returns c:\temp
            sMyVar = System.IO.Path.GetDirectoryName("c:\temp\mydatafile_001.txt") 
    
    	'//Combine two paths into one path => Returns c:\temp\mydatafile_001.txt
            sMyVar = System.IO.Path.Combine("c:\temp", "mydatafile_001.txt") 
    
    	'//Get filename without extension => Returns mydatafile_001
            sMyVar = System.IO.Path.GetFileNameWithoutExtension("c:\temp\mydatafile_001.txt") 
    
    	'//Get extension of the file => Returns txt
            sMyVar = System.IO.Path.GetExtension("c:\temp\mydatafile_001.txt") 
    
            Dts.TaskResult = Dts.Results.Success
        End Sub
    End Class
    

    Check if file/folder exists
    Imports System.IO
    
    Public Class ScriptMain
        Public Sub Main()
            Dim sMyVar As String
    
            If File.Exists("c:\temp\file_001.txt") = True Then
                '//Debug.Print "File Exists"
            End If
    
            If Directory.Exists("c:\temp") = True Then
                '//Debug.Print "Folder Exists"
            End If
    
            Dts.TaskResult = Dts.Results.Success
        End Sub
    End Class
    

    Read from text file
    Imports System.IO
    
    Public Class ScriptMain
        Public Sub Main()
            '//Read file content to string variable
            Dim sMyfileData As String
            Dim sReader As StreamReader = New StreamReader("c:\temp\file_001.txt")
            sMyfileData = sReader.ReadToEnd
            sReader.Close()
    
            Dts.TaskResult = Dts.Results.Success
        End Sub
    End Class
    

    Read from text file (line by line)
    Imports System.IO
    
    Public Class ScriptMain
        Public Sub Main()
            '//Read file line by line
            Dim sReader As New StreamReader("c:\autoexec.bat")
            ' Display all the text lines in the file.
            Do Until sReader.Peek = -1
                ' The ReadLine methods reads whole lines.
                Console.WriteLine(sReader.ReadLine)
            Loop
            ' Always close a StreamReader when you've done with it.
            sReader.Close()
    
            Dts.TaskResult = Dts.Results.Success
        End Sub
    End Class
    

    Write to text file
    Imports System.IO
    
    Public Class ScriptMain
        Public Sub Main()
    
            '//Open existing file for append. If file doesn't exist then new file will be created
            Dim writer As StreamWriter = New StreamWriter("c:\write_test.txt", True)
            writer.WriteLine("Hello world - line1")
            writer.WriteLine("Hello world - line2")
            writer.Close()
    
            Dts.TaskResult = Dts.Results.Success
        End Sub
    End Class
    

    Get file information
    Imports System.IO
    
    Public Class ScriptMain
        Public Sub Main()
        
            '//Get file properties
            Dim sInfo As String
            Dim FileProps As FileInfo = New FileInfo("c:\windows\notepad.exe")
            sInfo = sInfo & " File Name = " & FileProps.FullName
            sInfo = sInfo & " Creation Time = " & FileProps.CreationTime
            sInfo = sInfo & " Last Access Time = " & FileProps.LastAccessTime
            sInfo = sInfo & " Last Write Time = " & FileProps.LastWriteTime
            sInfo = sInfo & " Size = " & FileProps.Length
    
            System.Diagnostics.Debug.Write(sInfo)
    
            FileProps = Nothing
    
            Dts.TaskResult = Dts.Results.Success
        End Sub
    End Class
    

    List files (with wild card search pattern and recursive option)
    Imports System.IO
    
    Public Class ScriptMain
        Public Sub Main()
            Dim file As String
            '//Recursive listing (search for *.txt)
            '//Dim files() As String = Directory.GetFiles("c:\windows", "*.txt", SearchOption.AllDirectories)
    
            '//Top level listing (search for *.txt)
            Dim files() As String = Directory.GetFiles("c:\windows", "*.txt", SearchOption.TopDirectoryOnly)
            For Each file In files
                System.Diagnostics.Debug.WriteLine(file & "...found")
            Next
            Dts.TaskResult = Dts.Results.Success
        End Sub
    End Class
    

    List sub directories
    Imports System.IO
    
    Public Class ScriptMain
        Public Sub Main()
            Dim dir As String
            'Dim dirlist() As String = Directory.GetDirectories("c:\windows","*",SearchOption.AllDirectories)
            Dim dirlist() As String = Directory.GetDirectories("c:\windows")
            For Each dir In dirlist
                System.Diagnostics.Debug.WriteLine(dir)
            Next
            
            Dts.TaskResult = Dts.Results.Success
        End Sub
    End Class
    

    List disk drives
    Imports System.IO
    
    Public Class ScriptMain
        Public Sub Main()
            Dim dirInfo As Directory
            Dim drive As String
            Dim drives() As String = dirInfo.GetLogicalDrives()
            For Each drive In drives
                System.Diagnostics.Debug.WriteLine(drive)
            Next
    
            Dts.TaskResult = Dts.Results.Success
        End Sub
    End Class
    

    File/Folder delete, copy, move
    Imports System.IO
    
    Public Class ScriptMain
        Public Sub Main()
            If File.Exists("c:\dest\datafile.txt") Then
                File.Delete("c:\dest\datafile.txt")
            End If
            File.Copy("c:\src\datafile.txt", "c:\dest\datafile.txt")
            File.Move("c:\src\datafile.txt", "c:\dest\datafile.txt")
    
            If Directory.Exists("c:\dest") Then
                Directory.Delete("c:\dest")
            End If
            Directory.CreateDirectory("c:\dest")
            Directory.Delete("c:\dest")
    
    
            Dts.TaskResult = Dts.Results.Success
        End Sub
    End Class
    

    [TOP]

    7.4 FAQ - How to convert ADODB object of ActiveX Script to native SSIS Task


    Using ADO objects inside ActiveX Script task is very common in DTS. People use ADO objects (i.e. ADODB.Connection, ADODB.RecordSet etc) for many reasons but the most common use are

    - Creating connections at runtime
    - Executing Adhoc Queries at runtime
    - Processing certain data row by row

    Check the following example on how to convert ActiveX Script. It performs couple of things

    - Establish Connection to SQL Server using ADODB.Connection object
    - Execute SQL Query and Load the recordset using ADODB.Recordset object
    - Loop through each record to build HTML formatted string and email it.

    Sample ActiveX Script using ADODB.Connection and ADODB.Recordset
    '**********************************************************************
    ' Visual Basic ActiveX Script
    '**********************************************************************
    
    Function Main()
        Dim objRs
        Dim objConn
        Dim strSql
        Dim strHtml
        
        Set objConn = CreateObject("ADODB.Connection")
        objConn.Open "Provider=SQLOLEDB;Data Source=(local);Trusted_Connection=yes;Initial Catalog=Northwind"
        
        strSql = "Select top 10 b.ProductName,Sum(a.UnitPrice*a.Quantity) as Total from [Order Details] a "
        strSql = strSql & "join Products b on a.ProductID =b.ProductID "
        strSql = strSql & "group by b.ProductName order by Sum(a.UnitPrice*a.Quantity) desc"
        
        '--- //Method 1 : Using Execute Method of Connection Object
        '--- Set objRs=objConn.Execute(strSql)
        '--- //
        
        '*** /// OR ///****
        
        '//Method 2 : Using Execute Method of Connection Object
        
        Set objRs = CreateObject("ADODB.Recordset")
        objRs.Open strSql, objConn
        '//
        
        strHtml = "<h2>Top 10 Products<h2><table>"
        strHtml = strHtml & "<tr><td>Product Name</td><td>Total</td></tr>"
        Do While Not objRs.EOF
            strHtml = strHtml & "<tr><td>" & objRs(0) & "</td><td>" & objRs(1) & "</td></tr>"
            objRs.MoveNext
        Loop
        strHtml = strHtml & "</table>"
        
        'MsgBox strHtml
    
        SendMail "dataservices@mycompany.com", "ceo@mycompany.com", "Top 10 Products", strHtml, True
        Main = DTSTaskExecResult_Success
    End Function
    
    Sub SendMail(FromAddress, ToAddress, Subject, Body, IsHtml)
        '//Write Code to send email
    End Sub
    

    Above script is DTS way to perform some common operations but when you migrate to SSIS you can take different approach without writing too much code. The best practice is whenever possible try to avoid hard coded connection string inside your script.

    The following table enlists how to migrate various patterns you generally encounter in the DTS world.

    DTS SSIS
    ADO Connection 1. Replace with Connection Manager
     
    ADO Command (no result set returned ... i.e. INSERT/UPDATE/DELETE) 1. Add Execute SQL Task. Set Connection, Set SQL Statement
    2. Set resultset property to "None"
    3. Set Parameter mapping if required
     
    ADO Recordset (which returns resultset) 1. Add SSIS variable of Object data type to hold Resultset
    2. Add Execute SQL Task. Set Connection, Set SQL Statement
    3. Set resultset property to "Full Resultset"
    4. Set resultset mapping to variable of Object data type to hold Recordset. Make sure to rename Resultset Name="0"
     
    ADO Recordset Looping 1. Add Foreach Loop Container
    2.
    2. Use Foreach ADO Enumerator and specify variable which holds resultset (SSIS variable of Object Datatype)
    3. In the Variable Mappings add recordset column index to SSIS variable map. Index starts from 0.
     

    Lets walk through Step-By-Step how to convert above sample DTS ActiveX script to SSIS equivalent control flow. 

     

    DTS to SSIS Migrations/Conversion  Click here to Download sample package


    Fig-1 (Converted SSIS Package)
     

     

    Sample Package Installation

    Perform the following steps to setup and test the above sample SSIS Package
    1. Extract the sample zip file
    2. Open FAQTest.sln and analyze or run the Sample Package to test

    Step-By-Step

    Define Variables : The sample package uses four variables with the following settings. "Is Expression" column refers to the  EvaluateAsExpression property of SSIS variable.
     
    Variable Name Data Type Value Is Expression Expression
    strHTML String   False  
    objRs Object   False  
    varProdName Object   False  
    varTotal Object   False  

    Define Connections : The sample package requires one connection.
    - Create an oledb connection ((local).Northwind) to use Northwind database.
     
    Execute SQL Task (Get Recordset) : Next step is to create an execute sql task to execute the following SQL Statement also make sure you select Northwind connection for this task.

    SQL
    Select top 10 b.ProductName,Sum(a.UnitPrice*a.Quantity) as TotalSales 
    from [Order Details] a 
    join Products b on a.ProductID =b.ProductID 
    group by b.ProductName order by Sum(a.UnitPrice*a.Quantity) desc
    

    Foreach Loop Container (Loop Recordset) : Place Foreach Loop Container and double click to open properties dialog box. Apply the following settings displayed in the screenshots.

    Fig-2 (Select Enumerator, ADO object Source Variable and Enum mode)
    DTS to SSIS Migrations/Conversion

    Fig-3 (Select Variable Mappings)
    DTS to SSIS Migrations/Conversion
     

    Script Task (Update HTML String) : Place Script Task inside the Foreach Loop Container.
    - Double click the Script Task
    - Specify ReadOnlyVariables as displayed in the following screenshot  
    - Specify ReadWriteVariables as displayed in the following screenshot.
    - Click on the Design Script Button
    - Enter the script displayed in the Fig-5

    Fig-4 (ReadOnly and ReadWrite variables)


    Fig-5 (Script for Script Task)

    Script
    Imports System
    Imports System.Data
    Imports System.Math
    Imports Microsoft.SqlServer.Dts.Runtime
    
    Public Class ScriptMain
        Public Sub Main()
            Dim ProdName As Object
            Dim Total As Object
            Dim HTML As Object
            ProdName = Dts.Variables("varProdName").Value
            Total = Dts.Variables("varTotal").Value
            HTML = Dts.Variables("strHTML").Value
    
            HTML = HTML.ToString & "<tr><td>" & ProdName.ToString & "</td><td>" & Total.ToString & "</td></tr>"
    
            Dts.Variables("strHTML").Value = HTML
    
            Dts.TaskResult = Dts.Results.Success
        End Sub
    End Class

     

    Script Task (Send HTML Email) : Last step is to place Script Task to execute SendHTMLEmail routine.
    - Place a Script Task
    - Double click the Script Task
    - Specify strHTML in the ReadOnlyVariables
    - Click on the Design Script Button
    - Enter the script displayed in the Fig-6

    Fig-6 (Send HTML Email)

    Script
    Imports System
    Imports System.Data
    Imports System.Math
    Imports Microsoft.SqlServer.Dts.Runtime
    
    Public Class ScriptMain
        Public Sub Main()
            Dim HTML As String
            Dim Header, Footer As String
            Header = "<h2>Top 10 Products<h2><table><tr><td>Product Name</td><td>Total</td></tr>"
            Footer = "</table>"
            HTML = Dts.Variables("strHTML").Value.ToString
    
            HTML = Header & HTML & Footer
    
            SendMail("dataservices@mycompany.com", "ceo@mycompany.com", "Top 10 Products", HTML, True)
    
            Dts.TaskResult = Dts.Results.Success
        End Sub
    
        Sub SendMail(ByVal FromAddress As String, _
            ByVal ToAddress As String, _
            ByVal Subject As String, _
            ByVal Body As String, _
            ByVal IsHtml As Boolean)
    
            MsgBox(Body)
            '//Write Code to send email
        End Sub
    
    End Class

     

    Connect all tasks and testing : Connect all tasks as shown in the Fig-1 and execute the package to test.
     

    [TOP]

    7.5 FAQ - How to loop through files in a specified folder, load one by one and move to archive folder using SSIS

    In DTS if you want to process files in a specified folder then you have to do good amount of work. But If you want to implement same in SSIS then you don't have to do much work. You can use "Foreach Loop Container" in SSIS to loop through files in a specified folder.

    The following sample SSIS Package shows how to process each file (Nightly_*.txt) in "C:\SSIS\NightlyData". After each file is processed its moved to Archive folder.

    DTS to SSIS Migrations/Conversion  Click here to Download sample package


    DTS to SSIS Migrations/Conversion
     

    Sample Package Installation

    Perform the following steps to setup and test the above sample SSIS Package
    1. Extract the sample zip file
    2. Create a folder C:\SSIS
    3. Create a Folder C:\SSIS\NightlyData
    4. Create a Folder C:\SSIS\NightlyData\Archived
    5. Copy Provided sample files to C:\SSIS\NightlyData
    6. Open FAQTest.sln and analyze or run the Sample Package to test

    Step-By-Step

    Define Variables : The sample package uses five variables with the following settings. "Is Expression" column refers to the  EvaluateAsExpression property of SSIS variable.
     
    Variable Name Data Type Value Is Expression Expression
    varSourceFolder String C:\SSIS\NightlyData False  
    varArchiveFolder String   True @[User::varSourceFolder] + "\\Archived"
    varArchivePath String   True @[User::varArchiveFolder] + "\\" + @[User::varFileName]
    varFileName String   False  
    varFilePath String   True @[User::varSourceFolder] + "\\" + @[User::varFileName]

    Define Connections : The sample package requires two connections.
    - Create an oledb connection ((local).tempdb) to use tempdb database.
    - Create a Flat file connection (NightlyDataFile) for any available file in the SourceFolder (in this example use C:\SSIS\NightlyData\Nightly_01.txt). We have to make FlatFile connection Dynamic so we can use one connection to load several files from the source folder. In order to make FlatFile connection dynamic we have to configure ConnectionString Property as an Expression (See below screenshot). varFilePath will be updated on each iteration of file in Foreach Loop Container (Check the Foreach Loop Container description below in this article).
     

    DTS to SSIS Migrations/Conversion
     

    Execute SQL Task (Create or Truncate Table) : Next step is to create an execute sql task to execute the following SQL Statement also make sure you select tempdb connection for this task.

    SQL
    if object_id('tempdb.dbo.Staging_Customers') is null
    begin
    create table tempdb.dbo.Staging_Customers
    (
     FilePath varchar(255) 
    ,CustName varchar(255) 
    ,CustPhone varchar(255) 
    ,CustEmail varchar(255) 
    )
    end
    
    truncate table tempdb.dbo.Staging_Customers
    

    Foreach Loop Container (Load Nighly Data Files) : Place Foreach Loop Container and double click to open properties dialog box. Apply the following settings displayed in the screenshots.

    Fig-1 (Select Enumerator, Folder, Files and Retrieve filename)
    DTS to SSIS Migrations/Conversion

    Fig-2 (Select Variable Mappings)
    DTS to SSIS Migrations/Conversion
     

    Data flow (Load Data File) : Place Data flow inside the Foreach Loop Container.
    - Double click the dataflow
    - Place FlatFile Source
    - Place OLEDB Destination.
    - Connect FlatFile Source and OLEDB Destination
    - Double click on the OLEDB Destination to Select tempdb connection. Then click on mapping and configu

    Source->Destination
    DTS to SSIS Migrations/Conversion

    Mappings
    DTS to SSIS Migrations/Conversion
     

    File System Task (Move File to Archive) : Last step is to place File System Task to move processed file to archive folder. Please specify the properties displayed as below.

    DTS to SSIS Migrations/Conversion
     

    Connect all tasks and testing : Connect all tasks as shown in the very first screen and run the package. If everything is configured correctly then files should load into staging table and then moved to Archived folder.
     

    [TOP]

    7.6 FAQ - How to send HTML email in SSIS

    SSIS Improved Send Mail Task by adding support of SMTP but still it lakes most common email requirement which is send email in HTML format. Send Mail Task in SSIS only support text format so again programmers have to use script task and write some VB.net code to send email in HTML format. You can use the following reusable routine to send HTML formatted email.

    Send HTML email
        '// Example :
        '// SendMail("someone@mycompany.com, _
        '//          "support@dtsxchange.com", _
        '//          "HTML Test Email!!!", _
        '//          "<B>Hello</B> How are you?", _
        '//          True)
        Private Sub SendMail( _
              ByVal SendTo As String, _
              ByVal From As String, _
              ByVal Subject As String, _
              ByVal Body As String, _
              Optional ByVal IsBodyHtml As Boolean = True, _
              Optional ByVal SMTPServer As String = "localhost", _
              Optional ByVal UserName As String = "", _
              Optional ByVal Password As String = "", _
              Optional ByVal Domain As String = "", _
              Optional ByVal Attachments As String = "")
    
            Dim oMessage As System.Net.Mail.MailMessage
            Dim mySmtpClient As System.Net.Mail.SmtpClient
    
            oMessage = New System.Net.Mail.MailMessage(From, SendTo, Subject, Body)
            oMessage.IsBodyHtml = IsBodyHtml
            '//Attachments
            If Not String.IsNullOrEmpty(Attachments) Then
                Dim sFiles() As String
                Dim sFile As String
                sFiles = Split(Attachments, ";")
                For Each sFile In sFiles
                    If Not String.IsNullOrEmpty(sFile) Then
                        oMessage.Attachments.Add(New Net.Mail.Attachment(sFile))
                    End If
                Next
            End If
    
            mySmtpClient = New System.Net.Mail.SmtpClient(SMTPServer, 25)
            If UserName = "" Then
                mySmtpClient.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials
            Else
                mySmtpClient.Credentials = New System.Net.NetworkCredential(UserName, Password, Domain)
            End If
            mySmtpClient.Send(oMessage)
        End Sub
    

    [TOP]

    7.7 FAQ - How to migrate OLAP Task from DTS to SSIS

    No. In DTS 2000 (SQL Server Enterprise Edition) Microsoft provided OLAP Task to process Cube stored on Analysis Services 2000. Unfortunately there is no support for Analysis Services 2000 Cube Processing in SSIS, however Microsoft do provide support for Analysis Services 2005 Cube Processing using "Analysis Services Processing Task".

    If you really want to migrate your AS2000 Cube Processing task to SSIS then you can go with embedded DTS package option which can be executed using Execute DTS 2000 Package Task. DTS xChange will Migrate all your OLAP Task to Execute DTS 2000 Package Task (Embedded DTS Package). 

    [TOP]

    7.8 FAQ - How to make my SSIS connections dynamic so I can easily switch to different environment (e.g. Dev, QA, Prod ...)

    In DTS if you want to make your connection attributes dynamic (i.e. Server, UserName, Password etc.) then you can use UDL files or Dynamic Properties Task but none of them were effective and they had their own drawbacks.

    In SSIS Microsoft came up with a concept called "SSIS Configurations". You can read configuration settings from any of the following source.

    Read from XML File
    Read from SQL Server Table
    Read from Registry Key
    Read from Environment Variable
    Read from Parent 

    The most common way of reading configurations is "XML Config File" (see below screenshot).
    DTS to SSIS Migrations/Conversion

    If you use DTS xChange then configuration files for selected Connection Types will be automatically created during migration. DTS xChange is smart enough to detect all your common connections based on connection attributes (i.e. server, username, password etc.) and generate one config file which can be referenced in many packages. You can easily modify Config file and all your packages using that Config file will start pointing to new server/database.
     

    [TOP]

    7.9 FAQ - How to migrate parameterized DTS packages to SSIS (i.e. Parameters passed using command line from SQL Server Job)

    Changing value of child package variable was easily possible in DTS using "Execute DTS Package Task" settings called inner/outer variables. But unfortunately this is not directly supported in SSIS if you using "Execute SSIS Package Task".

    However you can use VB.net code inside script task to read/write child package variable. There is another way to read parent package variable in SSIS is "Configurations". The following two sections illustrate both techniques.

    Read parent package variable from child package (Using Parent Variable Configuration)

    The Parent Variable Configuration feature of SSIS allows variables from a parent package to be inherited by a child package. This is different than the SSIS’ predecessor, DTS, where variables were pushed down from the parent package to the child package. In SSIS the child package requests the variable by name from the parent package, allowing the variable to be inherited from any calling parent package that uses the Execute Package task to call the child package.

    In the following screen value of parent variable varBatchID_Parent is being assigned to child package variable gvarBatchID_Child.
     
    For more info please visit
    http://technet.microsoft.com/en-us/library/ms345179.aspx

    DTS to SSIS Migrations/Conversion

    You can select any available property as configuration target property including variables, connections, task or package property. In the following example target is value property of variable called gvarBatchID_Child

    DTS to SSIS Migrations/Conversion

    Read/write child package variable from parent package (Using Script Task)

    Many times you have to pass variables or Static Values at run time to child package and due to complexity of logic you might want to use scripting instead of "Configuration" technique explained in the previous section. The following piece of code displays how you can load any SSIS package at run time, set package variables and execute the package.


    Load Package, Set Variable and Execute Package at runtime
    Option Strict Off
    
    Imports System
    Imports System.Data
    Imports System.Math
    Imports Microsoft.SqlServer.Dts.Runtime
    Public Class ScriptMain
        Public Sub Main()
            Dim oApp As Microsoft.SqlServer.Dts.Runtime.Application = New _
                                        Microsoft.SqlServer.Dts.Runtime.Application()
            Dim oPkg As Microsoft.SqlServer.Dts.Runtime.Package
    
            '//Load Child Package from SQL Server
            oPkg = oApp.LoadFromSqlServer("\DW_Packages\Task_ExecSQL", "(local)", "", "", Nothing)
    
            Dim vars As Variables
    
            '//If Child Package Variable Doesn't exist at runtime 
            '//then create a new variable and pass the value from Parent package variable.
            If oPkg.Variables.Contains("gvChild1") Then
                oPkg.VariableDispenser.LockOneForWrite("gvChild1", vars)
                Try
                    vars("gvChild1").Value = "Hello!!! Set From Parent..."
                Catch ex As Exception
                    Throw ex
                Finally
                    vars.Unlock()
                End Try
            Else
                oPkg.Variables.Add("gvChild1", False, "", "Hello!!! Set From Parent...")
            End If
    
            oPkg.Execute() '//Execute the Child Package
    
            Dts.TaskResult = Dts.Results.Success
        End Sub
    End Class
    

    [TOP]

    7.10 FAQ - How can DTS xChange save time and money

    DTS xChnage is developed by a team of experienced developers/DBAs who have great experience with DTS to SSIS migration and they have migrated thousands of packages. So they understand the pain of migration process and they have already faced all challenges which you going to face or you already facing during DTS migration. We packaged all necessary functionality for DTS migration in a very easy to use and solid framework... which is DTS xChange.

    DTS xChange uses proprietary rule based engine to migrate DTS Packages to SSIS by applying best practices of SSIS. So by using DTS xChange you not only get higher migration success rate but you also get new features supported by SSIS (e.g. Event Handlers, Logging,  XML Configuration Files etc.)

    If you planning for manual migration without using any tool then you must consider the following facts about DTS xChange which can save you significant amount time and money.

    DTS xChange saving - DTS to SSIS Conversion/Migration

    Top 10 features of DTS xChange

    Visit the following URL to see full list of feature matrix.

    DTS xChange Features :
    http://pragmaticworks.com/DTSxChange-vs-MSWizard.asp

    [TOP]

    7.11 FAQ - How to read/write variable value from child/parent package in SSIS

    Changing value of child package variable was easily possible in DTS using "Execute DTS Package Task" settings called inner/outer variables. But unfortunately this is not directly supported in SSIS if you using "Execute SSIS Package Task".

    However you can use VB.net code inside script task to read/write child package variable. There is another way to read parent package variable in SSIS is "Configurations". The following two sections illustrate both techniques.

    Read parent package variable from child package (Using Parent Variable Configuration)

    The Parent Variable Configuration feature of SSIS allows variables from a parent package to be inherited by a child package. This is different than the SSIS’ predecessor, DTS, where variables were pushed down from the parent package to the child package. In SSIS the child package requests the variable by name from the parent package, allowing the variable to be inherited from any calling parent package that uses the Execute Package task to call the child package.

    In the following screen value of parent variable varBatchID_Parent is being assigned to child package variable gvarBatchID_Child.
     
    For more info please visit
    http://technet.microsoft.com/en-us/library/ms345179.aspx

    DTS to SSIS Migrations/Conversion

    You can select any available property as configuration target property including variables, connections, task or package property. In the following example target is value property of variable called gvarBatchID_Child

    DTS to SSIS Migrations/Conversion

    Read/write child package variable from parent package (Using Script Task)

    Many times you have to pass variables or Static Values at run time to child package and due to complexity of logic you might want to use scripting instead of "Configuration" technique explained in the previous section. The following piece of code displays how you can load any SSIS package at run time, set package variables and execute the package.


    Load Package, Set Variable and Execute Package at runtime
    Option Strict Off
    
    Imports System
    Imports System.Data
    Imports System.Math
    Imports Microsoft.SqlServer.Dts.Runtime
    Public Class ScriptMain
        Public Sub Main()
            Dim oApp As Microsoft.SqlServer.Dts.Runtime.Application = New _
                                        Microsoft.SqlServer.Dts.Runtime.Application()
            Dim oPkg As Microsoft.SqlServer.Dts.Runtime.Package
    
            '//Load Child Package from SQL Server
            oPkg = oApp.LoadFromSqlServer("\DW_Packages\Task_ExecSQL", "(local)", "", "", Nothing)
    
            Dim vars As Variables
    
            '//If Child Package Variable Doesn't exist at runtime 
            '//then create a new variable and pass the value from Parent package variable.
            If oPkg.Variables.Contains("gvChild1") Then
                oPkg.VariableDispenser.LockOneForWrite("gvChild1", vars)
                Try
                    vars("gvChild1").Value = "Hello!!! Set From Parent..."
                Catch ex As Exception
                    Throw ex
                Finally
                    vars.Unlock()
                End Try
            Else
                oPkg.Variables.Add("gvChild1", False, "", "Hello!!! Set From Parent...")
            End If
    
            oPkg.Execute() '//Execute the Child Package
    
            Dts.TaskResult = Dts.Results.Success
        End Sub
    End Class
    

     

    [TOP]

    7.12 FAQ - Is there any 3rd party tool available in the market other than DTS xChange to help with DTS to SSIS migration

    No - Only available option is DTS xChange or inbuilt MS DTS Migration Wizard

    But study suggests that MS Migration Wizard Success Rate is very low. DTS xChange has several enhancements and new features compared to MS DTS Migration Wizard which saves significant amount of time and money. Visit the following URL to see full list of feature matrix.

    DTS xChange Features :
    http://pragmaticworks.com/DTSxChange-vs-MSWizard.asp

    [TOP]

    7.13 FAQ - What are the advantages/disadvantages of storing SSIS packages to MSDB vs File System

    This is another common question we face many times

    "Should I store my SSIS Packages to File System or on SQL Server?"

    There are two places you can store your packages: on the file system or in the msdb database. Each storage option has its own pros and cons and which option you choose will be based on what is more important to you. We’ll cover these pros and cons in much depth in this section but to summarize, the following table gives you a high-level idea of which storage option is best based on the what functionality you’re most interested in. Just because a given storage option is not checked, does not mean it doesn’t have that functionality. The ones checked just are most optimized for the given functionality.

     
    Functionality Best in File System Best in MSDB
    Security   X
    Backup and Recovery X  
    Deployment X  
    Troubleshooting X  
    Execution Speed X X
    Availability X  

    If security concerns you greatly, you may want to consider placing your packages in the msdb database. To secure your packages on the file system, you could have multiple layers of security by using the Windows Active Directory security on the folder on the file system where the packages are at. You could also then place a password on the packages to keep users that may have administrator rights to your machine from executing the package. This does add extra complexity to your package deployments in some cases. If you store your packages in the msdb database, you can assign package roles to each package to designate who can see or execute the package. The packages can also be encrypted in the msdb database, which strengthens your security even more.
     
    Backup and recovery is simpler with storing your packages in the msdb database. If you were to store your packages in the msdb database, then you must only wrap the msdb database into your regular maintenance plan to backup all the packages. As packages are added, they are wrapped into the maintenance plan. The problem with this is that you can restore a single package using this mechanism. You’d have to restore all the packages to a point in time, and that would also restore the jobs and history. The other option is a file system backup, which would just use your favorite backup software to backup the folders and files. If you did this, you must rely on your Backup Operator to do this for you, which makes some uneasy. You could though at that point, restore individual packages to a point in time. In reality, you may just go ahead and redeploy the packages from Source Safe if you couldn’t retrieve a backup file.

    File system deployments are much simpler but less sophisticated. To deploy packages onto the file system, you must only copy them into the directory for the package store. You can create subdirectories under the parent directory to subdivide it easily. You can also copy a single package over easily as well in case you need to make a package change. To import a package into the package store using the msdb database, you must use Management Studio (or a command-line tool called dtutil.exe) and import them package by package. To do a bulk migration, you could use the deployment utility.
     
    Along the same lines as deployment is troubleshooting. If something were to go bump in the night and you wanted to see if the packages in production were the same release as the packages you thought you had deployed, you must only copy the files down to your machine and perform a comparison using Source Safe or another similar tool. If the files were stored in the msdb database, you would have to right-click on each package in Management Studio and select Export. If the same packages were stored in the file system, you must only copy the files to your machine.

    Availability of your packages is always on the top of the list for DBAs. If you were to store the packages in the msdb database and the database engine were to go down, the packages are unavailable. If they were stored in the file system, then your packages would be available for execution. Of course, if the database engine is down, then probably one of your key data sources would also be down at the time.

    The good news is no matter what storage option you choose the performance will be the same. As you can see there are many pros and cons to each storage option and neither overwhelmingly wins. The main reason that we choose to use the file system generally is for simplicity of deployment.
     

    [TOP]

    7.14 FAQ - Why should I migrate DTS packages to SSIS (advantages of SSIS over DTS)

    We get this question almost every day so we ended up creating new FAQ for that

    "We can run DTS Packages in SQL Server 2005/2008 without any problem so what's the need to upgrade them to SSIS?"

    Well there are many good reasons why you should migrate DTS Packages to SSIS Packages very soon.

    and ... many more....

    For more information please download the following white paper
    Whats New in SSIS.doc
     

    [TOP]

    7.15 FAQ - Which data providers are supported in SSIS


    Data-Connectivity Providers and SSIS

    Note:  The following is not a definitive list of all data providers, and not all data providers on this list have been tested by Microsoft with SSIS. Only current Beta or shipping products are listed. Information about third-party products was provided by the product vendors and could not be independently verified.

    Soure : Microsoft.com  [
    http://technet.microsoft.com/en-us/library/bb332055.aspx]

    Last Updated : 4/1/2008
    Data
    source
    Released
    by
    Data-access
    API
    Supported database
    versions
    Vendor
    support
    with
    SSIS?
    64-bit
    support?
    SQL Server Microsoft OLE DB 2000 and later
    versions
    Y x64,
    IA64
    SQL Server Microsoft ADO.NET 2000 and later
    versions
    Y x64,
    IA64
    SQL Server Microsoft ODBC 2000 and later
    versions
    Y x64,
    IA64
    SQL Server Attunity OLE DB 2000 and later
    versions
    Y  
    SQL Server DataDirect OLE DB 2000 and later
    versions
    Y  
    DB2 Microsoft OLE DB All DRDA-compliant versions Y x64,
    IA64
    DB2 IBM OLE DB z/OS and UDB 7.0
    and later, AIX 5.0
    and later, AS400 4.5
    and later versions
    Y  
    DB2 IBM ADO.NET DB2 UDB 9.0 N  
    DB2 IBM ODBC z/OS and UDB 7.0
    and later versions

    AIX 5.0 and later
    versions, AS400 4.5
    and later versions

    N N
    DB2 Attunity OLE DB 6.1, 7.x, 8.0 on
    z/OS

    7.x, 8.0 on UNIX

    7.x, 8.0 on Windows

    Y  
    DB2/400 Attunity OLE DB On AS/400 5.1 and
    later versions
    Y  
    DB2 DataDirect OLE DB z/OS and UDB 7.0
    and later versions

    AIX 5.x

    AS400 4.5 and later
    versions

    N  
    DB2 HIT OLE DB z/OS and UDB 8.0
    and later versions

    AIX 5.x, AS400 4.5
    and later versions

    N  
    DB2 DataDirect ADO.NET z/OS and UDB 7.0
    and later

    AIX 5.x, AS400 4.5
    and later versions

    Y  
    DB2 ETI Bulk Load 8.0 and later
    versions
    Y  
    DB2¹ Persistent Data Flow Component

    Bulk Write & Bulk Read

    - N  
    Oracle Microsoft OLE DB 7.3.4 and later
    versions²
    Y N
    Oracle Microsoft ADO.NET 8.0 and later
    versions
    Y x64,
    IA64
    Oracle Oracle Corp OLE DB 8i and later versions Y x64,
    IA64
    Oracle Oracle Corp ADO.NET 8i and later versions Y x64,
    IA64
    Oracle Oracle Corp ODBC 8i and later versions N  
    Oracle Microsoft ODBC 8i and later versions N  
    Oracle Attunity OLE DB 9i and later versions Y  
    Oracle DataDirect OLE DB 8i and later versions Y  
    Oracle DataDirect ADO.NET 8i and later versions Y  
    Oracle ETI Bulk Load 9.0 and later
    versions
    Y  
    Oracle Persistent Data Flow Component

    Bulk Write

    8i and later versions N  
    SAP¹ Microsoft ADO.NET R/3 4.6C and later
    versions
    Y  
    SAP Theobald OLE DB R/3 Y  
    Office Access Microsoft OLE DB 2003 and earlier
    versions
    Y  
    Office Excel Microsoft OLE DB 2003 and earlier
    versions
    Y  
    Office 2007 Microsoft OLE DB 2007 N  
    Sybase Sybase OLE DB 11.5 and later
    versions
    N  
    Sybase Sybase ADO.NET 11.5 and later
    versions
    N  
    Sybase Attunity OLE DB 12.0 and later
    versions
    Y  
    Sybase DataDirect OLE DB 11.5 and later
    versions
    Y  
    Sybase DataDirect ADO.NET 11.5 and later
    versions
    Y  
    Informix IBM OLE DB 7.3 and later
    versions
    N  
    Informix Attunity OLE DB 7.31, 9.x, 10 Y  
    Informix¹ Persistent Data Flow Component

    Bulk Write & Bulk Read

    - N  
    Teradata Teradata OLE DB 2.6 and later
    versions
    N  
    Teradata Teradata ADO.NET 2.6 and later
    versions
    N  
    Teradata ETI Bulk Load 2.5 and later
    versions
    Y  
    Teradata ETI Bulk Extract 2.5 and later
    versions
    Y  
    FoxPro Microsoft OLE DB 8.0 and later
    versions
    N  
    File DBs Microsoft OLE DB Any Jet 4.0– compatible version N  
    Adabas Attunity OLE DB 6.2.2 to 7.4.x on
    z/OS

    3.3 to 5.1 on Open
    Systems (UNIX,
    Windows, OpenVMS)

    Y  
    CISAM Attunity OLE DB On UNIX Y  
    DISAM Attunity OLE DB On UNIX, Linux, and
    Windows
    Y  
    Ingres II Attunity OLE DB 2 to 2.56 Y  
    Oracle Rdb Attunity OLE DB 7.1.x, on OpenVMS
    Alpha and Integrity
    (Itanium)
    Y Y (HP
    Integrity)
    RMS Attunity OLE DB On OpenVMS Alpha
    and Integrity
    (Itanium)
    Y Y (HP
    Integrity)
    Enscribe Attunity OLE DB On HP NonStop G-
    Series and H-Series
    Y Y (HP
    Integrity)
    SQL/MP Attunity OLE DB On HP NonStop G-
    Series and H-Series
    Y Y (HP Integrity)
    IMS/DB Attunity OLE DB 6.1 and later
    versions
    Y  
    VSAM Attunity OLE DB On z/OS 1.1 and
    later versions
    Y  
    LDAP Persistent ODBC All LDAP-compliant
    servers
    N Y
    ¹This product is in beta.
    ²Although this provider can connect to and use versions of Oracle up to and including Oracle 10gR2, it does not support database constructs (such as BLOB/CLOB data types) introduced after Oracle 8.0).

    [TOP]

    7.16 FAQ - How to Enable/disable Task at runtime In SSIS

    You can enable/disable certain tasks in SSIS using two different methods.

    1. Use expression on Disable Property of Task

    2. Use expression on precedence constraint.

    Please use second option whenevr possible.

    [TOP]

    7.17 FAQ - How to run SSIS Packages using 32bit drivers on 64bit machine

    On 64 Operating System when you install Integration Services it will install 32bit and 64bit version of DTExec commandline tool which is used to execute SSIS packages.

    DTExec - 32Bit  can be found under  : C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn

    DTExec - 64Bit
      can be found under  : C:\Program Files\Microsoft SQL Server\90\DTS\Binn
     
    For more information click on the following URL

    http://msdn.microsoft.com/en-us/library/ms162810.aspx

    If your SSIS package is referencing any 32Bit DLL or 32Bit drivers from your package then you must use 32Bit version of DTExec.

    Common example of 32Bit driver is : Microsoft Jet Driver (MS Access or Excel). There is no 64Bit version of Jet Driver so any packages using Jet driver (i.e. Excel or MS Access Database Connections) must be called using 32 bit DTExec.

    When you are designing such SSIS packages in Visual Studio and if you have reference to any 32Bit driver/dll then make sure you change  Project Property Run64BitRuntime to False.

    - Right click on Project Node
    - Under Debugging option change Run64BitRuntime to False

     

    [TOP]

    7.18 FAQ - How to connect Integration Services running on a remote machine

    You may need to perform additional security configurations if you are connection to SSIS Server running on remote machine.

    Please check the following link for more information

    http://msdn.microsoft.com/en-us/library/aa337083.aspx

     

    [TOP]

    7.19 FAQ - Do I need multiple connections in SSIS for parellel processing

    It was commonly recommended in DTS that a package should contain multiple connection objects pointing to the same database if you had multiple tasks using that database. It was considered more efficient for each task to have a dedicated connection to the server.

    In SSIS, DTS Connection objects have been replaced with Connection Managers. There is a good reason for the name change. A SSIS Connection Manager maintains a pool of connections to the database rather than just a single transaction therefore you only need one Connection Manager whereas in DTS you would need multiple Connection objects. If you need to replicate the same behavior as DTS within a SSIS package then look into using the RetainSameConnection property.

    [TOP]

    8. Support

    8.1 Contact Us

    Pragmatic Works, Inc
    91 Branscomb Rd. Suite 16
    Green Cove Springs, FL 32043

    Sales Hotline: 1-(888)-471-1946
    Support Hotline: 1-(877)-468-6404

    Fax: 760-462-3959
    Sales@pragmaticworks.com
    Support@pragmaticworks.com

    About us:
    With decades of experience in business intelligence, Pragmatic Works specializes in implementing business intelligence solutions on the Microsoft BI stack (Analysis Services, Integration Services and Reporting Services) for small and large-scale customers.

    [TOP]

    8.2 Other Reference

    Introductory Videos from JumpstartTV
    http://www.jumpstarttv.com/

    Guided Tours
    http://www.microsoft.com/sql/technologies/integration/tours.mspx

    Guided Tours
    http://www.microsoft.com/sql/technologies/integration/tours.mspx

    TechNet Webcast: Introduction to SQL Server 2005 Integration Services (Level 200)
    http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032289998&EventCategory=5&culture=en-US&CountryCode=US

    SQL Server™ 2005: Integration Services Virtual Lab
    http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032286838&EventCategory=3&culture=en-US&CountryCode=US

    [TOP]

    8.3 Copyrights

    © 2009 Pragmatic Works, Inc. ALL RIGHTS RESERVED.

    This guide contains proprietary information protected by copyright. The software described in this guide is furnished under a software license or nondisclosure agreement. This software may be used or copied only in accordance with the terms of the applicable agreement. No part of this guide may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying and recording for any purpose other than the purchaser’s personal use without the written permission of Pragmatic Works Inc.

    If you have any questions regarding your potential use of this material, please contact: 

    Pragmatic Works, Inc
    91 Branscomb Rd. Suite 16
    Green Cove Springs, FL 32043

    Website :
    www.pragmaticworks.com
    Email : info@pragmaticworks.com
    Phone : 1-888-471-1946

    Disclaimer: The information in this document is provided in connection with Pragmatic Works products. No license, express or implied, by estoppel or otherwise, to any intellectual property right is granted by this document or in connection with the sale of Pragmatic Works products. EXCEPT AS SET FORTH IN PRAGMATIC WORKS' TERMS AND CONDITIONS AS SPECIFIED IN THE LICENSE AGREEMENT FOR THIS PRODUCT, PRAGMATIC WORKS ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL PRAGMATIC WORKS BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION OR LOSS OF INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF PRAGMATIC WORKS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Pragmatic Works makes no representations or warranties with respect to the accuracy or completeness of the contents of this document and reserves the right to make changes to specifications and product descriptions at any time without notice. Pragmatic Works does not make any commitment to update the information contained in this document.

    [TOP]