Enumerazione dei pacchetti disponibili a livello di codice

Quando si utilizzano i pacchetti di Integration Services a livello di codice, può essere necessario determinare se esiste un singolo pacchetto o cartella o enumerare i pacchetti salvati disponibili per il caricamento e l'esecuzione. La classe Application dello spazio dei nomi Microsoft.SqlServer.Dts.Runtime fornisce un'ampia varietà di metodi e classi per soddisfare questi requisiti.

In questo argomento

  • Verifica dell'esistenza di un pacchetto o di una cartella

  • Enumerazione dei pacchetti disponibili

    • Esempio (archivio pacchetti SSIS)

    • Esempio (SQL Server)

Per informazioni sul caricamento e l'esecuzione di pacchetti a livello di codice, vedere Caricamento ed esecuzione di un pacchetto locale a livello di codice e Caricamento ed esecuzione di un pacchetto remoto a livello di programmazione. Per informazioni sulla gestione di pacchetti e cartelle a livello di codice, vedere Gestione di pacchetti e cartelle a livello di programmazione.

Tutti i metodi descritti in questo argomento 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.

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

Verifica dell'esistenza di un pacchetto o di una cartella

Per determinare a livello di codice se un pacchetto salvato esiste, chiamare uno dei metodi seguenti prima di tentare di caricarlo ed eseguirlo:

Percorso di archiviazione

Metodo da chiamare

Archivio pacchetti SSIS

ExistsOnDtsServer

SQL Server

ExistsOnSqlServer

Per determinare a livello di codice se una cartella esiste prima di tentare di elencare i pacchetti archiviati al suo interno, chiamare uno dei metodi seguenti:

Percorso di archiviazione

Metodo da chiamare

Archivio pacchetti SSIS

FolderExistsOnDtsServer

SQL Server

FolderExistsOnSqlServer

Torna all'inizio

Enumerazione dei pacchetti disponibili

Per ottenere a livello di codice un elenco dei pacchetti salvati, chiamare uno dei metodi seguenti:

Percorso di archiviazione

Metodo da chiamare

Archivio pacchetti SSIS

GetDtsServerPackageInfos

SQL Server

GetPackageInfos

Gli esempi seguenti sono applicazioni console che dimostrano l'utilizzo di questi metodi.

Esempio (archivio pacchetti SSIS)

Utilizzare il metodo GetDtsServerPackageInfos per elencare i pacchetti archiviati nell'archivio pacchetti SSIS. I percorsi di archiviazione predefiniti gestiti dall'archivio pacchetti SSIS sono File system e MSDB. In questi percorsi è possibile creare altre cartelle logiche.

Imports Microsoft.SqlServer.Dts.Runtime

Module Module1

  Sub Main()

    Dim sqlFolder As String
    Dim sqlServer As String

    Dim ssisApplication As Application
    Dim sqlPackages As PackageInfos
    Dim sqlPackage As PackageInfo

    sqlServer = "."

    ssisApplication = New Application()

    ' Get packages stored in MSDB.
    sqlFolder = "MSDB"
    sqlPackages = ssisApplication.GetDtsServerPackageInfos(sqlFolder, sqlServer)
    If sqlPackages.Count > 0 Then
      Console.WriteLine("Packages stored in MSDB:")
      For Each sqlPackage In sqlPackages
        Console.WriteLine(sqlPackage.Name)
      Next
      Console.WriteLine()
    End If

    ' Get packages stored in the File System.
    sqlFolder = "File System"
    sqlPackages = ssisApplication.GetDtsServerPackageInfos(sqlFolder, sqlServer)
    If sqlPackages.Count > 0 Then
      Console.WriteLine("Packages stored in the File System:")
      For Each sqlPackage In sqlPackages
        Console.WriteLine(sqlPackage.Name)
      Next
    End If

    Console.Read()

  End Sub

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

namespace EnumeratePackagesSSIS_CS
{
  class Program
  {
    static void Main(string[] args)
    {

      string sqlFolder;
      string sqlServer;

      Application ssisApplication;
      PackageInfos sqlPackages;

      sqlServer = ".";

      ssisApplication = new Application();

      // Get packages stored in MSDB.
      sqlFolder = "MSDB";
      sqlPackages = ssisApplication.GetDtsServerPackageInfos(sqlFolder, sqlServer);
      if (sqlPackages.Count > 0)
      {
        Console.WriteLine("Packages stored in MSDB:");
        foreach (PackageInfo sqlPackage in sqlPackages)
        {
          Console.WriteLine(sqlPackage.Name);
        }
        Console.WriteLine();
      }

      // Get packages stored in the File System.
      sqlFolder = "File System";
      sqlPackages = ssisApplication.GetDtsServerPackageInfos(sqlFolder, sqlServer);
      if (sqlPackages.Count > 0)
      {
        Console.WriteLine("Packages stored in the File System:");
        foreach (PackageInfo sqlPackage in sqlPackages)
        {
          Console.WriteLine(sqlPackage.Name);
        }
      }

      Console.Read();

    }

  }

}

Torna all'inizio

Esempio (SQL Server)

Utilizzare il metodo GetPackageInfos per elencare i pacchetti di Integration Services archiviati in un'istanza di SQL Server.

Imports Microsoft.SqlServer.Dts.Runtime

Module Module1

  Sub Main()

    Dim sqlFolder As String
    Dim sqlServer As String
    Dim sqlUser As String
    Dim sqlPassword As String

    Dim ssisApplication As Application
    Dim sqlPackages As PackageInfos
    Dim sqlPackage As PackageInfo

    sqlFolder = String.Empty
    sqlServer = "(local)"
    sqlUser = String.Empty
    sqlPassword = String.Empty

    ssisApplication = New Application()

    sqlPackages = ssisApplication.GetPackageInfos(sqlFolder, sqlServer, sqlUser, sqlPassword)

    For Each sqlPackage In sqlPackages
      Console.WriteLine(sqlPackage.Name)
    Next

    Console.Read()

  End Sub

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

namespace EnumeratePackagesSql_CS
{
  class Program
  {
    static void Main(string[] args)
    {

      string sqlFolder;
      string sqlServer;
      string sqlUser;
      string sqlPassword;

      Application ssisApplication;
      PackageInfos sqlPackages;

      sqlFolder = String.Empty;
      sqlServer = "(local)";
      sqlUser = String.Empty;
      sqlPassword = String.Empty;

      ssisApplication = new Application();

      sqlPackages = ssisApplication.GetPackageInfos(sqlFolder, sqlServer, sqlUser, sqlPassword);

      foreach (PackageInfo sqlPackage in sqlPackages)
      {
        Console.WriteLine(sqlPackage.Name);
      }

      Console.Read();

    }
  }
}

Torna all'inizio

Icona di Integration Services (piccola) Rimanere aggiornati con Integration Services

Per i download, gli articoli, gli esempi e i video Microsoft più recenti, oltre alle soluzioni selezionate dalla community, visitare la pagina Integration Services sul sito MSDN:


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

Vedere anche

Concetti

Gestione dei pacchetti (servizio SSIS)