in the C# class file for your project:
using System;
using System.Runtime.InteropServices;
using DTS;
namespace DtsInterop
{
//This class loads and executes the DTS package.
class ExecPkgWithEvents
{
/* Prior to running this code, create a DTS package and save it to SQL Server. Then set a reference to
// the DTSPackage Object Library version 2.0 COM object.
*/
public Package2Class package;
[MTAThread]
static void Main(string[] args)
{
ExecPkgWithEvents app = new ExecPkgWithEvents();
app.Run();
}
public void Run()
{
try
{
package = new Package2Class();
UCOMIConnectionPointContainer CnnctPtCont = (UCOMIConnectionPointContainer) package;
UCOMIConnectionPoint CnnctPt;
PackageEventsSink PES = new PackageEventsSink ();
Guid guid = new Guid("10020605-EB1C-11CF-AE6E-00AA004A34D5"); // UUID of PackageEvents Interface
CnnctPtCont.FindConnectionPoint(ref guid, out CnnctPt);
int iCookie;
CnnctPt.Advise(PES, out iCookie);
object pVarPersistStgOfHost = null;
package.LoadFromSQLServer("PNXDEVBOX", null, null, DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection, null,
null, null, "Test", ref pVarPersistStgOfHost);
package.Execute();
package.UnInitialize();
package = null;
CnnctPt.Unadvise(iCookie); //a connection that is created by IConnectionPoint.Advise must be closed by calling IConnectionPoint.Unadvise to avoid a memory leak
}
catch(System.Runtime.InteropServices.COMException ex)
{
Console.WriteLine("COMException {0}/n{1}/n{2}", ex.ErrorCode, ex.Message, ex.StackTrace);
}
catch(System.Exception ex)
{
Console.WriteLine("Exception/n{0}/n{1}", ex.Message, ex.StackTrace);
}
}
}
//This class is responsible for handling DTS Package events. When an event is fired, a message is sent to
//the console.
class PackageEventsSink : DTS.PackageEvents
{
public void OnQueryCancel(string EventSource, ref bool pbCancel)
{
Console.WriteLine("OnQueryCancel({0})", EventSource);
pbCancel = false;
}
public void OnStart(string EventSource)
{
Console.WriteLine("OnStart({0})", EventSource);
}
public void OnProgress(string EventSource, string ProgressDescription, int PercentComplete, int ProgressCountLow, int ProgressCountHigh)
{
Console.WriteLine("OnProgress({0}, {1}, {2}, {3}, {4})", EventSource, ProgressDescription,
PercentComplete, ProgressCountLow, ProgressCountHigh);
}
public void OnError(string EventSource, int ErrorCode, string Source, string Description, string HelpFile, int HelpContext, string
IDofInterfaceWithError, ref bool pbCancel)
{
Console.WriteLine("OnError({0}, {1}, {2}, {3}, {4}, {5})", EventSource, ErrorCode, Source, Description,
HelpFile, HelpContext);
pbCancel = false;
}
public void OnFinish(string EventSource)
{
Console.WriteLine("OnFinish({0})", EventSource);
}
}