Caricamento ed esecuzione di un pacchetto locale a livello di codiceLoading and Running a Local Package Programmatically

È possibile eseguire Integration ServicesIntegration Services pacchetti alle necessità o a orari predeterminati utilizzando i metodi descritti in pacchetti in esecuzione.You can run Integration ServicesIntegration Services packages as needed or at predetermined times by using the methods described in Running Packages. Tuttavia, con poche righe di codice, è anche possibile eseguire un pacchetto da un'applicazione personalizzata, ad esempio un'applicazione Windows Form, un'applicazione console, un Web Form o un servizio Web ASP.NET oppure un servizio Windows.However, with only a few lines of code, you can also run a package from a custom application such as a Windows Forms application, a console application, an ASP.NET Web form or Web service, or a Windows service.

In questo argomento viene illustrato quanto segue:This topic discusses:

  • Caricamento di un pacchetto a livello di codiceLoading a package programmatically

  • Esecuzione di un pacchetto a livello di codiceRunning a package programmatically

    Tutti i metodi utilizzati in questo argomento per caricare ed eseguire pacchetti richiedono un riferimento di manageddts assembly.All of the methods used in this topic to load and run packages require a reference to the Microsoft.SqlServer.ManagedDTS assembly. Dopo aver aggiunto il riferimento in un nuovo progetto, importare il Microsoft.SqlServer.Dts.Runtime spazio dei nomi con un utilizzando o importazioni istruzione.After adding the reference in a new project, import the Microsoft.SqlServer.Dts.Runtime namespace with a using or Imports statement.

Caricamento di un pacchetto a livello di codiceLoading a Package Programmatically

Per caricare un pacchetto a livello di codice nel computer locale, indipendentemente dal fatto che il pacchetto sia archiviato in modalità locale o remota, chiamare uno dei metodi seguenti:To load a package programmatically on the local computer, whether the package is stored locally or remotely, call one of the following methods:

Percorso di archiviazioneStorage Location Metodo da chiamareMethod to Call
FileFile LoadPackage
Archivio pacchetti SSISSSIS Package Store LoadFromDtsServer
SQL ServerSQL Server LoadFromSqlServer
Importante

I metodi della classe Application per l'utilizzo dell'archivio pacchetti SSIS supportano solo ".", localhost o il nome del server locale.The methods of the Application class for working with the SSIS Package Store only support ".", localhost, or the server name for the local server. Non è possibile utilizzare "(local)".You cannot use "(local)".

Esecuzione di un pacchetto a livello di codiceRunning a Package Programmatically

Lo sviluppo di un'applicazione personalizzata in codice gestito che esegue un pacchetto nel computer locale richiede l'approccio seguente.Developing a custom application in managed code that runs a package on the local computer requires the following approach. I passaggi riepilogati in questa sezione sono illustrati nell'applicazione console di esempio seguente.The steps summarized here are demonstrated in the sample console application that follows.

Per eseguire un pacchetto a livello di codice nel computer localeTo run a package on the local computer programmatically

  1. Avviare l'ambiente di sviluppo di Visual Studio e creare una nuova applicazione nel linguaggio di sviluppo preferito.Start the Visual Studio development environment, and create a new application in your preferred development language. In questo esempio viene utilizzata un'applicazione console. Tuttavia, è anche possibile eseguire un pacchetto da un'applicazione Windows Form, da un Web Form o servizio Web ASP.NET oppure da un servizio Windows.This example uses a console application; however you can also run a package from a Windows Forms application, an ASP.NET Web form or Web service, or a Windows service.

  2. Nel progetto menu, fare clic su Aggiungi riferimento e aggiungere un riferimento a Microsoft.SqlServer.ManagedDTS.dll.On the Project menu, click Add Reference and add a reference to Microsoft.SqlServer.ManagedDTS.dll. Scegliere OK.Click OK.

  3. Utilizzo di Visual Basic importazioni istruzione o c# utilizzando per importare il Microsoft dello spazio dei nomi.Use the Visual Basic Imports statement or the C# using statement to import the Microsoft.SqlServer.Dts.Runtime namespace.

  4. Aggiungere il codice seguente nella routine principale.Add the following code in the main routine. L'applicazione console completata dovrebbe essere simile all'esempio seguente.The completed console application should look like the following example.

    Nota

    Nel codice di esempio è illustrato il caricamento del pacchetto dal file system tramite il metodo LoadPackage.The sample code demonstrates loading the package from the file system by using the LoadPackage method. Tuttavia, è anche possibile caricare il pacchetto dal database MSDB chiamando il metodo LoadFromSqlServer o dall'archivio pacchetti Integration ServicesIntegration Services chiamando il metodo LoadFromDtsServer.However you can also load the package from the MSDB database by calling the LoadFromSqlServer method, or from the Integration ServicesIntegration Services package store by calling the LoadFromDtsServer method.

  5. Eseguire il progetto.Run the project. Nel codice di esempio viene eseguito il pacchetto di esempio CalculatedColumns, installato con gli esempi di SQL ServerSQL Server.The sample code executes the CalculatedColumns sample package that is installed with the SQL ServerSQL Server samples. Il risultato dell'esecuzione del pacchetto è visualizzato nella finestra della console.The result of package execution is displayed in the console window.

Codice di esempioSample Code

Imports Microsoft.SqlServer.Dts.Runtime  

Module Module1  

  Sub Main()  

    Dim pkgLocation As String  
    Dim pkg As New Package  
    Dim app As New Application  
    Dim pkgResults As DTSExecResult  

    pkgLocation = _  
      "C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" & _  
      "\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx"  
    pkg = app.LoadPackage(pkgLocation, Nothing)  
    pkgResults = pkg.Execute()  

    Console.WriteLine(pkgResults.ToString())  
    Console.ReadKey()  

  End Sub  

End Module  
using System;  
using Microsoft.SqlServer.Dts.Runtime;  

namespace RunFromClientAppCS  
{  
  class Program  
  {  
    static void Main(string[] args)  
    {  
      string pkgLocation;  
      Package pkg;  
      Application app;  
      DTSExecResult pkgResults;  

      pkgLocation =  
        @"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" +  
        @"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx";  
      app = new Application();  
      pkg = app.LoadPackage(pkgLocation, null);  
      pkgResults = pkg.Execute();  

      Console.WriteLine(pkgResults.ToString());  
      Console.ReadKey();  
    }  
  }  
}  

Acquisizione di eventi da un pacchetto in esecuzioneCapturing Events from a Running Package

Quando si esegue un pacchetto a livello di codice, come illustrato nell'esempio precedente, è anche possibile acquisire errori e altri eventi che si verificano durante l'esecuzione del pacchetto.When you run a package programmatically as shown in the preceding sample, you may also want to capture errors and other events that occur as the package executes. A tale scopo, aggiungere una classe che eredita dalla classe DefaultEvents e passare un riferimento a tale classe quando si carica il pacchetto.You can accomplish this by adding a class that inherits from the DefaultEvents class, and by passing a reference to that class when you load the package. Anche se nell'esempio seguente viene acquisito solo l'evento OnError, la classe DefaultEvents consente di acquisire molti altri eventi.Although the following example captures only the OnError event, there are many other events that the DefaultEvents class lets you capture.

Per eseguire un pacchetto a livello di codice nel computer locale e acquisire gli eventi del pacchettoTo run a package on the local computer programmatically and capture package events

  1. Attenersi alla procedura descritta nell'esempio precedente per creare un progetto.Follow the steps in the preceding example to create a project for this example.

  2. Aggiungere il codice seguente nella routine principale.Add the following code in the main routine. L'applicazione console completata dovrebbe essere simile all'esempio seguente.The completed console application should look like the following example.

  3. Eseguire il progetto.Run the project. Nel codice di esempio viene eseguito il pacchetto di esempio CalculatedColumns, installato con gli esempi di SQL ServerSQL Server.The sample code executes the CalculatedColumns sample package that is installed with the SQL ServerSQL Server samples. Il risultato dell'esecuzione del pacchetto è visualizzato nella finestra della console, insieme agli eventuali errori che si verificano.The result of package execution is displayed in the console window, along with any errors that occur.

Codice di esempioSample Code

Imports Microsoft.SqlServer.Dts.Runtime  

Module Module1  

  Sub Main()  

    Dim pkgLocation As String  
    Dim pkg As New Package  
    Dim app As New Application  
    Dim pkgResults As DTSExecResult  

    Dim eventListener As New EventListener()  

    pkgLocation = _  
      "C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" & _  
      "\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx"  
    pkg = app.LoadPackage(pkgLocation, eventListener)  
    pkgResults = pkg.Execute(Nothing, Nothing, eventListener, Nothing, Nothing)  

    Console.WriteLine(pkgResults.ToString())  
    Console.ReadKey()  

  End Sub  

End Module  

Class EventListener  
  Inherits DefaultEvents  

  Public Overrides Function OnError(ByVal source As Microsoft.SqlServer.Dts.Runtime.DtsObject, _  
    ByVal errorCode As Integer, ByVal subComponent As String, ByVal description As String, _  
    ByVal helpFile As String, ByVal helpContext As Integer, _  
    ByVal idofInterfaceWithError As String) As Boolean  

    ' Add application–specific diagnostics here.  
    Console.WriteLine("Error in {0}/{1} : {2}", source, subComponent, description)  
    Return False  

  End Function  

End Class  
using System;  
using Microsoft.SqlServer.Dts.Runtime;  

namespace RunFromClientAppWithEventsCS  
{  
  class MyEventListener : DefaultEvents  
  {  
    public override bool OnError(DtsObject source, int errorCode, string subComponent,   
      string description, string helpFile, int helpContext, string idofInterfaceWithError)  
    {  
      // Add application-specific diagnostics here.  
      Console.WriteLine("Error in {0}/{1} : {2}", source, subComponent, description);  
      return false;  
    }  
  }  
  class Program  
  {  
    static void Main(string[] args)  
    {  
      string pkgLocation;  
      Package pkg;  
      Application app;  
      DTSExecResult pkgResults;  

      MyEventListener eventListener = new MyEventListener();  

      pkgLocation =  
        @"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" +  
        @"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx";  
      app = new Application();  
      pkg = app.LoadPackage(pkgLocation, eventListener);  
      pkgResults = pkg.Execute(null, null, eventListener, null, null);  

      Console.WriteLine(pkgResults.ToString());  
      Console.ReadKey();  
    }  
  }  
}  

Vedere ancheSee Also

Comprendere le differenze tra l'esecuzione locale e remoto Understanding the Differences between Local and Remote Execution
Caricamento ed esecuzione di un pacchetto remoto a livello di codice Loading and Running a Remote Package Programmatically
Caricamento dell'Output di un pacchetto localeLoading the Output of a Local Package