프로그래밍 방식으로 로컬 패키지 로드 및 실행

패키지 실행에 설명된 메서드를 사용하여 필요할 때마다 또는 미리 지정한 시간에 Integration Services 패키지를 실행할 수 있습니다. 그러나 단 몇 줄의 코드로도 Windows Forms 응용 프로그램, 콘솔 응용 프로그램, ASP.NET Web Form 또는 웹 서비스, Windows 서비스 등의 사용자 지정 응용 프로그램에서 패키지를 실행할 수 있습니다.

이 항목에서는 다음과 같은 주제를 다룹니다.

  • 프로그래밍 방식으로 패키지 로드

  • 프로그래밍 방식으로 패키지 실행

이 항목에서 설명하는 패키지 로드 및 실행 방법을 사용할 경우에는 항상 Microsoft.SqlServer.ManagedDTS 어셈블리에 대한 참조가 필요합니다. 새 프로젝트에 참조를 추가한 후에는 using 또는 Imports 문을 사용하여 Microsoft.SqlServer.Dts.Runtime 네임스페이스를 가져옵니다.

프로그래밍 방식으로 패키지 로드

로컬 컴퓨터에서 프로그래밍 방식으로 패키지를 로드하려면 패키지가 로컬 위치에 저장되어 있든 원격 위치에 저장되어 있든 관계없이 다음 메서드 중 하나를 호출합니다.

저장소 위치

호출할 메서드

파일

LoadPackage

또는

LoadPackage

SSIS 패키지 저장소

LoadFromDtsServer

SQL Server

LoadFromSqlServer

중요 정보중요

SSIS 패키지 저장소를 사용하기 위한 Application 클래스의 메서드는 ".", localhost 또는 로컬 서버의 서버 이름만 지원합니다. "(local)"은 사용할 수 없습니다.

프로그래밍 방식으로 패키지 실행

로컬 컴퓨터에서 패키지를 실행하는 관리 코드로 사용자 지정 응용 프로그램을 개발하려면 다음 방법이 필요합니다. 여기에 요약된 단계는 뒷부분의 예제 콘솔 응용 프로그램에서 자세히 보여 줍니다.

로컬 컴퓨터에서 프로그래밍 방식으로 패키지를 실행하려면

  1. Visual Studio 개발 환경을 시작하고 원하는 개발 언어로 새 응용 프로그램을 만듭니다. 이 예에서는 콘솔 응용 프로그램을 사용하지만 Windows Forms 응용 프로그램, ASP.NET Web Form 또는 Web 서비스, Windows 서비스 등에서 패키지를 실행할 수도 있습니다.

  2. 프로젝트 메뉴에서 참조 추가를 클릭하고 Microsoft.SqlServer.ManagedDTS.dll에 대한 참조를 추가합니다. 확인을 클릭합니다.

  3. Visual Basic Imports 문 또는 C# using 문을 사용하여 Microsoft.SqlServer.Dts.Runtime 네임스페이스를 가져옵니다.

  4. 기본 루틴에 다음 코드를 추가합니다. 완성된 콘솔 응용 프로그램은 다음 예와 같습니다.

    [!참고]

    예제 코드에서는 LoadPackage 메서드를 사용하여 파일 시스템에서 패키지를 로드하는 방법을 보여 줍니다. 그러나 LoadFromSqlServer 메서드를 호출하여 MSDB 데이터베이스에서 패키지를 로드하거나 LoadFromDtsServer 메서드를 호출하여 Integration Services 패키지 저장소에서 패키지를 로드할 수도 있습니다.

  5. 프로젝트를 실행합니다. 예제 코드에서는 SQL Server 예제와 함께 설치된 CalculatedColumns 예제 패키지를 실행합니다. 패키지 실행 결과는 콘솔 창에 표시됩니다.

예제 코드

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. 기본 루틴에 다음 코드를 추가합니다. 완성된 콘솔 응용 프로그램은 다음 예와 같습니다.

  3. 프로젝트를 실행합니다. 예제 코드에서는 SQL Server 예제와 함께 설치된 CalculatedColumns 예제 패키지를 실행합니다. 패키지 실행 결과는 발생한 오류와 함께 콘솔 창에 표시됩니다.

예제 코드

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 아이콘(작은 아이콘) Integration Services 관련 최신 정보 얻기

Microsoft의 최신 다운로드, 아티클, 예제 및 비디오와 커뮤니티의 정선된 솔루션을 보려면 MSDN 또는 TechNet의 Integration Services 페이지를 방문하십시오.

이러한 업데이트에 대한 자동 알림을 받으려면 해당 페이지에서 제공하는 RSS 피드를 구독하십시오.