Caricamento ed esecuzione di un pacchetto locale a livello di programmazione

È possibile eseguire pacchetti di Integration Services in base alle necessità o a orari predeterminati utilizzando i metodi descritti in Esecuzione di pacchetti. 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.

In questo argomento viene illustrato quanto segue:

  • Caricamento di un pacchetto a livello di programmazione

  • Esecuzione di un pacchetto a livello di programmazione

Tutti i metodi utilizzati in questo argomento per caricare ed eseguire pacchetti richiedono un riferimento all'assembly Microsoft.SqlServer.ManagedDTS. Dopo aver aggiunto il riferimento in un nuovo progetto, importare lo spazio dei nomi Microsoft.SqlServer.Dts.Runtime con un'istruzione using o Imports.

Caricamento di un pacchetto a livello di programmazione

Per caricare un pacchetto a livello di programmazione nel computer locale, indipendentemente dal fatto che si archiviato in locale o in remoto, chiamare uno dei metodi seguenti:

Percorso di archiviazione

Metodo da chiamare

File

LoadPackage

oppure

LoadPackage

Archivio pacchetti SSIS

LoadFromDtsServer

SQL Server

LoadFromSqlServer

Nota importanteImportante

I metodi della classe Application per l'utilizzo dell'archivio pacchetti SSIS supportano solo ".", localhost o il nome del server locale. Non è possibile utilizzare "(local)".

Esecuzione di un pacchetto a livello di programmazione

Lo sviluppo di un'applicazione personalizzata in codice gestito che esegue un pacchetto nel computer locale richiede l'approccio seguente. I passaggi riepilogati in questa sezione sono illustrati nell'applicazione console di esempio seguente.

Per eseguire un pacchetto a livello di programmazione nel computer locale

  1. Avviare l'ambiente di sviluppo di Visual Studio e creare una nuova applicazione nel linguaggio di sviluppo preferito. 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.

  2. Scegliere Aggiungi riferimento dal menu Progetto, quindi aggiungere un riferimento a Microsoft.SqlServer.ManagedDTS.dll. Fare clic su OK.

  3. Utilizzare l'istruzione Imports di Visual Basic o l'istruzione using di C# per importare lo spazio dei nomi Microsoft.SqlServer.Dts.Runtime.

  4. Aggiungere il codice seguente nella routine principale. L'applicazione console completata dovrebbe essere simile all'esempio seguente.

    [!NOTA]

    Nel codice di esempio è illustrato il caricamento del pacchetto dal file system tramite il metodo LoadPackage. Tuttavia, è anche possibile caricare il pacchetto dal database MSDB chiamando il metodo LoadFromSqlServer o dall'archivio pacchetti Integration Services chiamando il metodo LoadFromDtsServer.

  5. Eseguire il progetto. Nel codice di esempio viene eseguito il pacchetto di esempio CalculatedColumns, installato con gli esempi di SQL Server. Il risultato dell'esecuzione del pacchetto è visualizzato nella finestra della console.

Codice di esempio

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 esecuzione

Quando si esegue un pacchetto a livello di programmazione, come illustrato nell'esempio precedente, è anche possibile acquisire errori e altri eventi che si verificano durante l'esecuzione del pacchetto. A tale scopo, aggiungere una classe che eredita dalla classe DefaultEvents e passare un riferimento a tale classe quando si carica il pacchetto. Anche se nell'esempio seguente viene acquisito solo l'evento OnError, la classe DefaultEvents consente di acquisire molti altri eventi.

Per eseguire un pacchetto a livello di programmazione nel computer locale e acquisire gli eventi del pacchetto

  1. Attenersi alla procedura descritta nell'esempio precedente per creare un progetto.

  2. Aggiungere il codice seguente nella routine principale. L'applicazione console completata dovrebbe essere simile all'esempio seguente.

  3. Eseguire il progetto. Nel codice di esempio viene eseguito il pacchetto di esempio CalculatedColumns, installato con gli esempi di SQL Server. Il risultato dell'esecuzione del pacchetto è visualizzato nella finestra della console, insieme agli eventuali errori che si verificano.

Codice di esempio

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();
    }
  }
}
Icona di Integration Services (piccola) Rimanere aggiornati con Integration Services

Per informazioni sui download, gli articoli, gli esempi e i video Microsoft più recenti, nonché sulle soluzioni selezionate dalla community, visitare la pagina Integration Services su MSDN o Technet:

Per ricevere notifica automatica su questi aggiornamenti, sottoscrivere i feed RSS disponibili nella pagina.