Click here to Skip to main content
15,885,278 members
Articles / Desktop Programming / Windows Forms

Load and Execute SSIS Packages in Microsoft Windows

Rate me:
Please Sign up or sign in to vote.
4.56/5 (17 votes)
26 Mar 2010CPOL7 min read 89.6K   3.3K   34  
This article introduces a method to load and execute SSIS packages in Microsoft Windows with a demo WPF application.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;

namespace SSISWindowsLibrary
{
    public enum DTSPackageStatus
    {
        Empty, LoadFailed, Loaded
    };

    public class DTSPackage
    {
        private string _PkgLocation;
        private DTSPackageStatus _Status;
        private Package _Pkg;
        private Microsoft.SqlServer.Dts.Runtime.Application _app;

        public string PkgLocation
        {
            get { return _PkgLocation; }
        }

        public DTSPackageStatus PackageStatus
        {
            get { return _Status; }
        }

        public DTSPackage()
        {
            _PkgLocation = null;
            _Status = DTSPackageStatus.Empty;
            _Pkg = null;
            _app = new Microsoft.SqlServer.Dts.Runtime.Application();
        }

        private void DisposePackage()
        {
            if (_Pkg != null)
            {
                _Pkg.Dispose();
                _Pkg = null;
            }
        }

        public void ClearPackage()
        {
            _PkgLocation = null;
            _Status = DTSPackageStatus.Empty;
            DisposePackage();
        }

        public void LoadPackage(string PkgLocation)
        {
            _PkgLocation = PkgLocation;

            if (PkgLocation != null)
            {
                DisposePackage();
                try
                {
                    _Pkg = _app.LoadPackage(PkgLocation, null);
                    _Status = DTSPackageStatus.Loaded;
                }
                catch
                {
                    _Status = DTSPackageStatus.LoadFailed;
                }
            }
        }

        public void SetPakageConnections(System.Collections.Hashtable ConnectionCollection)
        {
            if (_Status == DTSPackageStatus.Loaded)
            {
                Connections connections = _Pkg.Connections;
                for (int Idex = 0; Idex < connections.Count; Idex++)
                {
                    ConnectionManager connection = connections[Idex];
                    string ConName = connection.Name;

                    if (ConnectionCollection.Contains(ConName))
                    {
                        connection.ConnectionString = ConnectionCollection[ConName].ToString();
                    }
                }
            }
        }

        public System.Collections.Hashtable GetPackageConnections()
        {
            System.Collections.Hashtable ConnectionCollection = new System.Collections.Hashtable();

            if (_Status == DTSPackageStatus.Loaded)
            {
                Connections connections = _Pkg.Connections;
                for (int Idex = 0; Idex < connections.Count; Idex++)
                {
                    ConnectionManager connection = connections[Idex];
                    string ConName = connection.Name;
                    string ConStr = connection.ConnectionString;

                    ConnectionCollection.Add(ConName, ConStr);
                }
            }

            return ConnectionCollection;
        }

        public DTSExecResult Execute()
        {
            return _Pkg.Execute();
        }

        public DTSExecResult Execute(SSISEventListener Listerner)
        {
            return _Pkg.Execute(null, null, Listerner, null, null);
        }

        ~DTSPackage()
        {
            DisposePackage();
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
United States United States
I have been working in the IT industry for some time. It is still exciting and I am still learning. I am a happy and honest person, and I want to be your friend.

Comments and Discussions