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


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

Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure

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

В данном разделе рассматриваются следующие темы.

  • Программная загрузка пакета.

  • Программное выполнение пакета.

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

Программная загрузка пакета

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

Расположение для сохранения Вызываемый метод
Файлы LoadPackage
Хранилище пакетов служб SSIS LoadFromDtsServer
SQL Server LoadFromSqlServer

Внимание

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

Программное выполнение пакета

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

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

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

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

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

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

Когда пакет запускается программно, как показано в предыдущем образце, может понадобиться также перехватить ошибки и другие события, возникающие по мере выполнения пакета. Это можно сделать, добавив класс, порожденный из класса 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();  
    }  
  }  
}  

См. также

Основные сведения об отличиях между локальным и удаленным выполнением
Программная загрузка и запуск удаленного пакета
Загрузка выхода локального пакета