다음을 통해 공유


로컬 컴퓨터에서 프로그래밍 방식으로 SSIS 패키지 실행

로컬 컴퓨터에 올바른 필수 구성 요소와 몇 줄의 관리 코드만 있으면 사용자 지정 응용 프로그램에서 패키지를 실행할 수 있습니다. 여기서 사용자 지정 응용 프로그램이란 Windows Forms 응용 프로그램, 콘솔 응용 프로그램, ASP.NET 웹 양식이나 웹 서비스 또는 Windows 서비스입니다.

[!참고]

필요 시 또는 지정된 시간에 Integration Services 패키지를 실행하려면 패키지 실행 항목에 설명된 메서드를 사용합니다.

이 항목의 섹션

  • 로컬 컴퓨터에 대한 필수 조건

  • 로컬 컴퓨터에서 패키지를 로드하고 실행하는 응용 프로그램 만들기

    • 패키지를 로드하는 메서드

    • 패키지를 실행하는 메서드

  • 실행 중인 패키지에서 이벤트 캡처

로컬 컴퓨터에 대한 필수 조건

패키지는 해당 패키지를 시작하는 응용 프로그램과 동일한 컴퓨터에서 실행됩니다. 따라서 응용 프로그램이 다른 컴퓨터에 원격으로 저장된 패키지를 로드하더라도 패키지는 로컬 컴퓨터에서 실행됩니다.

따라서 로컬 컴퓨터에서 패키지를 로드하고 실행하려면 다음과 같은 조건이 충족되어야 합니다.

  • 패키지에 외부의 리소스에 대한 참조가 포함된 경우 로컬 컴퓨터에서 해당 참조가 유효해야 합니다. 이러한 참조에는 연결 문자열, 서버, 파일, 메시지 큐 등이 포함됩니다.

    [!참고]

    로컬 컴퓨터에 패키지 외부의 리소스에 대한 유효한 참조가 없는 경우 로컬 컴퓨터에서 패키지를 실행할 수 없습니다. 대신 패키지가 원격 컴퓨터에서 실행되도록 해야 합니다. 자세한 내용은 원격 컴퓨터에서 프로그래밍 방식으로 SSIS 패키지 실행을 참조하십시오.

  • 패키지에서 로컬 컴퓨터의 데이터 원본과 기타 리소스에 액세스하는 데 필요한 모든 사용 권한이 있어야 합니다.

  • Integration Services가 설치된 컴퓨터의 개발 환경 Business Intelligence Development Studio 외부에서만 패키지를 실행할 수 있습니다.

    [!참고]

    SQL Server 사용 조건에서 추가 컴퓨터에 Integration Services를 설치하는 것을 허용하지 않을 수 있습니다. Integration Services는 서버 구성 요소이며 클라이언트 컴퓨터나 로컬 컴퓨터에 재배포할 수 없습니다. 로컬 컴퓨터에 Integration Services를 설치하지 않았거나 설치할 수 없는 경우 패키지가 원격 컴퓨터에서 실행되도록 해야 합니다. 자세한 내용은 원격 컴퓨터에서 프로그래밍 방식으로 SSIS 패키지 실행을 참조하십시오.

로컬 컴퓨터에서 SSIS 패키지를 로드하고 실행하는 응용 프로그램 만들기

이 항목에서 패키지를 프로그래밍 방식으로 로드하고 실행하는 모든 메서드에는 Microsoft.SqlServer.ManagedDTS 어셈블리에 대한 참조가 필요합니다. 새 프로젝트에 이 참조를 추가한 후에는 C# using 문 또는 Visual Basic Imports 문을 사용하여 Microsoft.SqlServer.Dts.Runtime 네임스페이스를 가져옵니다.

SSIS 패키지를 로드하는 메서드

로컬 컴퓨터에서 프로그래밍 방식으로 패키지를 로드하려면 패키지가 로컬에 있는지 아니면 원격에 있는지에 관계없이 다음 표의 메서드 중 하나를 호출합니다. 이러한 메서드 모두에서 반환하는 Package 개체를 사용하여 패키지를 실행하거나 패키지 속성을 검사할 수 있습니다.

저장소 위치

호출할 메서드

파일

LoadPackage

또는

LoadPackage

SSIS 패키지 저장소

LoadFromDtsServer

참고참고
SSIS 패키지 저장소를 사용하기 위한 Application 클래스의 메서드는 ".", 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. 기본 루틴에 이 절차 뒤에 이어지는 예제 코드를 추가합니다.

    완성된 콘솔 응용 프로그램은 다음 섹션의 예제 코드와 같습니다.

    [!참고]

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

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

실행 중인 SSIS 패키지에서 이벤트 캡처

이전 섹션의 예제에 표시된 대로 패키지를 프로그래밍 방식으로 실행하는 경우 패키지를 실행할 때 발생하는 오류와 기타 이벤트를 캡처할 수도 있습니다. 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의 Integration Services 페이지를 방문하십시오.


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