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);

}