Поделиться через


Программное перечисление доступных пакетов

Во время обработки пакетов служб Integration Services программным путем может потребоваться определить, существует ли отдельный пакет или папка, или перечислить сохраненные пакеты, которые доступны для загрузки и выполнения. Класс Application из пространства имен Microsoft.SqlServer.Dts.Runtime предоставляет разнообразные методы, выполняющие эти требования.

В этом разделе

  • Определение существования пакета или папки

  • Перечисление доступных пакетов

    • Пример (хранилище пакетов служб SSIS)

    • Пример (SQL Server)

Дополнительные сведения о программной загрузке и выполнении пакетов см. в разделах Программная загрузка и запуск локального пакета и Программная загрузка и запуск удаленного пакета. Дополнительные сведения о программном управлении пакетами и папками см. в разделе Программное управление пакетами и папками.

Все методы, описываемые в этом разделе, должны ссылаться на сборку Microsoft.SqlServer.ManagedDTS. После добавления ссылки в новый проект импортируйте пространство имен Microsoft.SqlServer.Dts.Runtime с помощью инструкции using или Imports.

Важное примечаниеВажно!

Методы класса Application для работы с хранилищем пакетов служб SSIS поддерживают только имена «.», localhost и имя сервера для локального сервера. Нельзя использовать имя «(local)».

Определение существования пакета или папки

Чтобы определить программно, существует ли сохраненный пакет, вызовите один из следующих методов перед тем, как пытаться загрузить и выполнить пакет.

Место хранения

Вызываемый метод

Хранилище пакетов служб SSIS

ExistsOnDtsServer

SQL Server

ExistsOnSqlServer

Чтобы определить программно, существует ли папка, прежде чем пытаться перечислить сохраненные в ней пакеты, вызовите один из следующих методов.

Место хранения

Вызываемый метод

Хранилище пакетов служб SSIS

FolderExistsOnDtsServer

SQL Server

FolderExistsOnSqlServer

В начало

Перечисление доступных пакетов

Чтобы получить программным путем список сохраненных пакетов, вызовите один из следующих методов.

Место хранения

Вызываемый метод

Хранилище пакетов служб SSIS

GetDtsServerPackageInfos

SQL Server

GetPackageInfos

Приложения командной строки в следующих образцах иллюстрируют использование этих методов.

Пример (хранилище пакетов служб SSIS)

Используйте метод GetDtsServerPackageInfos для перечисления пакетов, сохраненных в хранилище пакетов служб SSIS. Местом хранения по умолчанию, которое управляется хранилищем пакетов служб SSIS, является файловая система и MSDB. В этих местах можно создать дополнительные логические папки.

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

    }

  }

}

В начало

Пример (SQL Server)

Используйте метод GetPackageInfos для перечисления пакетов служб Integration Services, хранящихся в экземпляре 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();

    }
  }
}

В начало

Значок служб Integration Services (маленький)Будьте в курсе новых возможностей cлужб Integration Services

Чтобы загружать новейшую документацию, статьи, образцы и видеоматериалы от корпорации Майкрософт, а также лучшие решения от участников сообщества, посетите страницу Integration Services на сайтах MSDN или TechNet:

Чтобы получать автоматические уведомления об этих обновлениях, подпишитесь на RSS-каналы, предлагаемые на этой странице.

См. также

Основные понятия