Программный запуск пакета служб SSIS на локальном компьютере

С несколькими строками в управляемом коде и правильно настроенными предварительным условиями на локальном компьютере можно запустить пакет из пользовательского приложения. Пользовательское приложение может быть приложением Windows Forms, приложением командной строки, веб-формой или веб-службой ASP.NET либо службой Windows.

ПримечаниеПримечание

Пакеты служб Integration Services можно выполнять по мере необходимости или в заранее определенное время с помощью методов, описанных в разделе Выполнение пакетов.

Подразделы данного раздела

  • Предварительные условия для локального компьютера

  • Создание приложения загрузки и запуска пакета на локальном компьютере

    • Методы, загружающие пакет

    • Метод, запускающий пакет

    • Пример

  • Перехват событий в выполняющемся пакете

Предварительные условия для локального компьютера

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

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

  • Если пакет содержит ссылки на внешние по отношению к пакету ресурсы, эти ссылки должны быть допустимы на локальном компьютере. Эти ссылки включают строки соединения, серверы, файлы, запросы сообщений и т. д.

    ПримечаниеПримечание

    Если у локального компьютера нет допустимых ссылок на внешние по отношению к пакету ресурсы, нельзя запустить пакет на локальном компьютере. В этом случае надо проверить, что пакет запускается на удаленном компьютере. Дополнительные сведения см. в разделе Программный запуск пакета служб SSIS на удаленном компьютере.

  • Необходимо иметь все необходимые пакету разрешения для доступа к источникам данных и другим ресурсам на локальном компьютере или с него.

  • Вне среды разработки среды Business Intelligence Development Studio пакет может выполняться только на том компьютере, на котором установлены службы Integration Services.

    ПримечаниеПримечание

    Условия лицензионного соглашения служб SQL Server могут не позволять устанавливать Integration Services на дополнительные компьютеры. (службы Integration Services являются серверным компонентом и не распространяются на клиентских или локальных компьютерах.) Если на локальном компьютере не установлена платформа служб Integration Services, необходимо проверить, что пакет запускается на удаленном компьютере. Дополнительные сведения см. в разделе Программный запуск пакета служб SSIS на удаленном компьютере.

Создание приложения для загрузки и запуска пакета служб SSIS на локальном компьютере

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

Методы для загрузки пакета служб SSIS

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

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

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

Файл

LoadPackage

— или —

LoadPackage

Хранилище пакетов SSIS

LoadFromDtsServer

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

SQL Server

LoadFromSqlServer

Метод для запуска пакета служб SSIS

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

Пример

Используйте следующую процедуру для разработки пользовательского приложения в управляемом коде, которое загружает и выполняет пакет на локальном компьютере. Следующая процедура является образцом приложения консоли, демонстрирующим шаги в процедуре.

Программная загрузка и выполнение пакета на локальном компьютере

  1. Запустите среду разработки Visual Studio и создайте новое приложение на языке программирования по своему выбору.

    В этом образце используется приложение командной строки. Однако выполнить пакет можно также из приложения Windows Forms, веб-формы или веб-службы ASP.NET либо службы Windows.

  2. Выберите в меню Проект пункт Добавить ссылку и добавьте ссылку на библиотеку Microsoft.SqlServer.ManagedDTS.dll. Нажмите кнопку ОК.

  3. Используйте инструкцию Visual Basic Imports или инструкцию C# using, чтобы импортировать пространство имен Microsoft.SqlServer.Dts.Runtime.

  4. В подпрограмме Main добавьте образец кода, следующий за этой процедурой.

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

    ПримечаниеПримечание

    Данный образец кода иллюстрирует загрузку пакета из файловой системы с помощью метода LoadPackage. Кроме того, пакет можно загрузить из базы данных msdb с помощью метода LoadFromSqlServer или из пакета служб Integration Services с помощью метода LoadFromDtsServer.

  5. Запустите проект.

    В образце кода выполняется пакет образца CalculatedColumns, который устанавливается вместе с образцами SQL Server. Результат выполнения пакета отображается в консольном окне.

Образец кода

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

Перехват событий в выполняющемся пакете служб SSIS

Когда пакет запускается программно, как показано в образце в предыдущем разделе, может понадобиться также перехватить ошибки и другие события, возникающие при запуске пакета. Это можно сделать, добавив класс, порожденный из класса DefaultEvents, и передав ссылку на этот класс при загрузке пакета. Хотя следующий пример перехватывает только событие OnError, существует много других событий, которые позволяет перехватывать класс DefaultEvents.

Программное выполнение пакета на локальном компьютере и перехват событий пакета

  1. Пройдите по шагам в предыдущем разделе, чтобы создать проект для этого примера.

  2. В подпрограмме Main добавьте образец кода, появляющийся после этой процедуры.

    В следующем примере представлен полный код приложения командной строки.

  3. Запустите проект.

    В образце кода запускается пакет образца CalculatedColumns, который устанавливается вместе с образцами SQL Server. Результат выполнения пакета отображается в консольном окне вместе с сообщениями о любых возникших ошибках.

Образец кода

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();
    }
  }
}
Значок служб Integration Services (маленький) Будьте в курсе новых возможностей cлужб Integration Services

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


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