Enumerar los paquetes disponibles mediante programación

Cuando trabaja mediante programación con paquetes de Integration Services, puede determinar si existe un paquete o una carpeta individual o enumerar los paquetes guardados que están disponible para cargarse y ejecutarse. La clase Application del espacio de nombres Microsoft.SqlServer.Dts.Runtime proporciona diferentes métodos para satisfacer estos requisitos.

En este tema

  • Determinar si existe un paquete o una carpeta

  • Enumerar los paquetes disponibles

    • Ejemplo (Almacén de paquetes SSIS)

    • Ejemplo (SQL Server)

Para obtener información sobre cómo cargar y ejecutar paquetes mediante programación, vea Cargar y ejecutar un paquete local mediante programación y Cargar y ejecutar mediante programación un paquete remoto. Para obtener información sobre cómo administrar paquetes y carpetas mediante programación, vea Administrar paquetes y carpetas mediante programación.

Todos los métodos descritos en este tema requieren una referencia al ensamblado Microsoft.SqlServer.ManagedDTS. Después de agregar la referencia en un proyecto nuevo, importe el espacio de nombres Microsoft.SqlServer.Dts.Runtime con una instrucción using o Imports.

Nota importanteImportante

Los métodos de la clase Application para trabajar con el almacén de paquetes SSIS sólo admiten ".", localhost o el nombre del servidor local. No puede utilizar "(local)".

Determinar si existe un paquete o una carpeta

Para determinar mediante programación si existe un paquete guardado, llame a uno de los métodos siguientes antes de intentar cargarlo y ejecutarlo:

Ubicación de almacenamiento

Método que se llama

Almacén de paquetes SSIS

ExistsOnDtsServer

SQL Server

ExistsOnSqlServer

Para determinar mediante programación si existe una carpeta antes de intentar enumerar los paquetes almacenados en ella, llame a uno de los métodos siguientes:

Ubicación de almacenamiento

Método que se llama

Almacén de paquetes SSIS

FolderExistsOnDtsServer

SQL Server

FolderExistsOnSqlServer

Volver al principio

Enumerar los paquetes disponibles

Para obtener una lista de los paquetes guardados mediante programación, llame a uno de los métodos siguientes:

Ubicación de almacenamiento

Método que se llama

Almacén de paquetes SSIS

GetDtsServerPackageInfos

SQL Server

GetPackageInfos

Los ejemplos siguientes son aplicaciones de consola que muestran el uso de estos métodos.

Ejemplo (Almacén de paquetes SSIS)

Utilice el método GetDtsServerPackageInfos para enumerar los paquetes almacenados en el almacén de paquetes SSIS. Las ubicaciones de almacenamiento predeterminadas que administra el almacén de paquetes SSIS son Sistema de archivos y MSDB. Puede crear carpetas lógicas adicionales dentro de estas ubicaciones.

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();

    }

  }

}

Volver al principio

Ejemplo (SQL Server)

Utilice el método GetPackageInfos para enumerar los paquetes de Integration Services almacenados en una instancia de 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();

    }
  }
}

Volver al principio

Icono de Integration Services (pequeño) Manténgase al día con Integration Services

Para obtener las más recientes descargas, artículos, ejemplos y vídeos de Microsoft, así como soluciones seleccionadas de la comunidad, visite la página de Integration Services en MSDN o TechNet:

Para recibir notificaciones automáticas de estas actualizaciones, suscríbase a las fuentes RSS disponibles en la página.

Vea también

Conceptos