谢谢!

解决方案 »

  1.   

    调用步骤:
    1.在sqlserver中创建DTS包2.C#代码调用
    using System;
    using System.Runtime.InteropServices;
    using DTS;namespace DtsInterop
    {
     class ExecPkgWithEvents
     {
      public Package2Class package;  public void Run()
      {
       try
       {
        package = new Package2Class();    object pVarPersistStgOfHost = null;    package.LoadFromSQLServer("YOUR_SERVER_NAME", null, null, DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection, null, 
         null, null, "YOUR_PACKAGE_NAME", ref pVarPersistStgOfHost);    package.Execute();
        package.UnInitialize();
        package = null;
       }
       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);
       }
      }
     }

    注:需要引用的COM组件为Microsoft DTSPackage Object Library
      

  2.   

    Steps to Use Visual C# .NET to Handle DTS Events
    The following sample code executes a DTS package that is stored in SQL Server. When an event is fired, a message is sent to the console. Inside the Visual C# .NET project, add a reference to the Microsoft DTSPackage Object Library version 2.0 COM object, and then insert the following code 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("YOUR_SERVER_NAME", null, null, DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection, null, 
    null, null, "YOUR_PACKAGE_NAME", ref pVarPersistStgOfHost); package.Execute();
    package.UnInitialize();
    package = null;
    } 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);
    } } } 
      

  3.   

    ms-help://MS.MSDNQTR.2003FEB.2052/enu_kbsqlserver/en-us/sqlserver/Q319985.htm