Esecuzione di un pacchetto SSIS a livello di programmazione sul computer locale

Con solo alcune righe di codice gestito e i prerequisiti corretti sul computer locale, è possibile eseguire un pacchetto da un'applicazione personalizzata. L'applicazione personalizzata può essere un'applicazione Windows Form, un'applicazione console, un Web Form o servizio Web ASP.NET oppure un servizio Windows.

Nota

Per eseguire pacchetti di Integration Services in base alle necessità o a orari predeterminati, utilizzare i metodi descritti nell'argomento Esecuzione di pacchetti.

Sezioni dell'argomento

  • Prerequisiti per il computer locale

  • Creazione di un'applicazione che carica ed esegue un pacchetto sul computer locale

    • Metodi che caricano un pacchetto

    • Metodo che esegue il pacchetto

    • Esempio

  • Acquisizione di eventi da un pacchetto in esecuzione

Prerequisiti per il computer locale

Un pacchetto viene eseguito nello stesso computer dell'applicazione che avvia il pacchetto. In questo modo, quando un 'applicazione carica un pacchetto archiviato in remoto in un altro computer, il pacchetto viene eseguito sul computer locale.

Di conseguenza, per il caricamento e la gestione di un pacchetto sul computer locale sono necessari diversi prerequisiti:

  • Se il pacchetto contiene riferimenti a risorse che sono esterne al pacchetto, tali riferimenti devono essere validi sul computer locale. Questi riferimenti includono stringhe di connessione, server, file, code di messaggi e così via.

    Nota

    Se il computer locale non dispone di riferimenti validi alle risorse che sono esterne al pacchetto, non è possibile eseguire il pacchetto sul computer locale. È invece necessario verificare che il pacchetto sia in esecuzione sul computer remoto. Per ulteriori informazioni, vedere Esecuzione di un pacchetto SSIS in fase di programmazione su un computer remoto.

  • È necessario disporre di tutte le autorizzazioni che il pacchetto richiede per accedere alle origini dati e ad altre risorse nel o dal computer locale.

  • È possibile eseguire un pacchetto all'esterno dell'ambiente di sviluppo, Business Intelligence Development Studio, solo in un computer su cui è installato Integration Services.

    Nota

    È possibile che i termini della licenza di SQL Server non consentano di installare Integration Services su computer aggiuntivi. Integration Services è un componente server e non è ridistribuibile a computer client o locali. Se Integration Services non è e non può essere installato sul computer locale, è necessario assicurarsi che il pacchetto sia in esecuzione sul computer remoto. Per ulteriori informazioni, vedere Esecuzione di un pacchetto SSIS in fase di programmazione su un computer remoto.

Creazione di un'applicazione che consente di caricare ed eseguire un pacchetto SSIS sul computer locale

In questo argomento, tutti i metodi tramite cui vengono caricati ed eseguiti pacchetti a livello di programmazione richiedono un riferimento all'assembly Microsoft.SqlServer.ManagedDTS. Dopo aver aggiunto questo riferimento in un nuovo progetto, importare lo spazio dei nomi Microsoft.SqlServer.Dts.Runtime con un'istruzione C# using o un'istruzione Visual Basic Imports.

Metodi che consentono il caricamento di un pacchetto SSIS

Per caricare un pacchetto a livello di programmazione sul computer locale, indipendentemente dal fatto che sia archiviato in locale o in remoto, chiamare uno dei metodi elencati nella tabella seguente: Tramite tutti questi metodi viene restituito un oggetto Package, che è quindi possibile utilizzare per eseguire il pacchetto o esaminarne le proprietà.

Percorso di archiviazione

Metodo da chiamare

File

LoadPackage

- oppure -

LoadPackage

Archivio pacchetti SSIS

LoadFromDtsServer

NotaNota
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)".

SQL Server

LoadFromSqlServer

Metodo tramite cui viene eseguito il pacchetto SSIS

Per eseguire un pacchetto a livello di programmazione sul computer locale, caricare il pacchetto come descritto nella sezione precedente, quindi chiamare il metodo Execute del pacchetto.

Esempio

Utilizzare la procedura seguente per sviluppare un'applicazione personalizzata in codice gestito che carica ed esegue un pacchetto sul computer locale. Dopo la procedura segue un'applicazione console di esempio che dimostra i passaggi della procedura.

Per caricare ed eseguire un pacchetto a livello di programmazione sul 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. Nella routine principale, aggiungere il codice di esempio che segue questa procedura.

    L'applicazione console completata dovrebbe essere simile al codice di esempio riportato nella sezione 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 SSIS in esecuzione

Quando si esegue un pacchetto a livello di programmazione, come illustrato nell'esempio nella sezione 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 sul computer locale e acquisire gli eventi del pacchetto

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

  2. Nella routine principale, aggiungere il codice di esempio riportato dopo questa procedura.

    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:


Per ricevere notifiche automatiche su questi aggiornamenti, sottoscrivere i feed RSS disponibili nella pagina.