다음을 통해 공유


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

적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime

패키지 실행에 설명된 방법을 사용하여 필요에 따라 또는 미리 지정한 시간에 Integration Services 패키지를 실행할 수 있습니다. 그러나 몇 줄의 코드만 사용하여 Windows Forms 애플리케이션, 콘솔 애플리케이션, ASP.NET 웹 양식 또는 웹 서비스 또는 Windows 서비스와 같은 사용자 지정 애플리케이션에서 패키지를 실행할 수도 있습니다.

이 항목에서는 다음에 대해 설명합니다.

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

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

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

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

패키지를 로컬 컴퓨터에 프로그래밍 방식으로 로드하려면 패키지가 로컬 또는 원격으로 저장되었는지 여부에 관계없이 다음 방법 중 하나를 호출합니다.

스토리지 위치 호출할 메서드
파일 LoadPackage
SSIS 패키지 저장소 LoadFromDtsServer
SQL Server LoadFromSqlServer

Important

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

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

로컬 컴퓨터에서 패키지를 실행하는 관리 코드로 사용자 지정 애플리케이션을 개발하려면 다음 방법이 필요합니다. 여기에 요약된 단계는 다음 샘플 콘솔 애플리케이션에 설명되어 있습니다.

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

  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 메서드를 사용하여 파일 시스템에서 패키지를 로드하는 방법을 보여 줍니다. 그러나 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();  
    }  
  }  
}  

참고 항목

로컬 실행과 원격 실행의 차이점 이해
프로그래밍 방식으로 원격 패키지 로드 및 실행
로컬 패키지의 출력 로드