Run SSIS Package programatically


here is a small sample that show how to run an existing package from a .Net program.


This sample show how to replace target and source connection string and give a value to a package variable.


It show too how to register package event.


using Runtime = Microsoft.SqlServer.Dts.Runtime;


private PackageEvents packageEvents;


public event PackageEventEventHandler packageEvent = null;


public event PackageProgressEventHandler packageProgress = null;


 


packageEvents = new PackageEvents();


packageEvents.packageEvent += new PackageEventEventHandler(packageEvents_packageEvent);


packageEvents.packageProgress += new PackageProgressEventHandler(packageEvents_packageProgress);


 


public bool Execute(string packagePath, string sourceConnectionString, string targetConnectionString, string packageVariable)


{


Runtime.Application app = new Runtime.Application();


Runtime.Package package = app.LoadPackage(packagePath, null);


package.InteractiveMode = false;


// Target is the name of the target connection in the SSIS package


package.Connections["Target"].ConnectionString = targetConnectionString;


package.Connections["Source"].ConnectionString = sourceConnectionString;


// The package have a variable, we give it the value


package.Variables["myVar"].Value = packageVariable;


Runtime.DTSExecResult executionResult = package.Execute(null, null, packageEvents, null, null);


if (executionResult == Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure)


{


return false;


}


return true;


}


void packageEvents_packageProgress(int percentComplete)


{


if (packageProgress != null)


packageProgress(percentComplete);


}


void packageEvents_packageEvent(EventType type, string message)


{


if (packageEvent != null)


packageEvent(type, message);


}


Skip to main content