프로그래밍 방식으로 로컬 패키지 로드 및 실행Loading and Running a Local Package Programmatically

실행할 수 있습니다 Integration ServicesIntegration Services 에 설명 된 메서드를 사용 하 여 지정 된 시간에 필요에 따라 또는에서 패키지 실행 중인 패키지합니다.You can run Integration ServicesIntegration Services packages as needed or at predetermined times by using the methods described in Running Packages. 그러나 단 몇 줄의 코드로도 Windows Forms 응용 프로그램, 콘솔 응용 프로그램, ASP.NET Web Form 또는 웹 서비스, Windows 서비스 등의 사용자 지정 응용 프로그램에서 패키지를 실행할 수 있습니다.However, with only a few lines of code, you can also run a package from a custom application such as a Windows Forms application, a console application, an ASP.NET Web form or Web service, or a Windows service.

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

  • 프로그래밍 방식으로 패키지 로드Loading a package programmatically

  • 프로그래밍 방식으로 패키지 실행Running a package programmatically

    에 대 한 참조를 필요한 모든 패키지 로드 및 실행 하려면이 항목에서 사용 하는 방법의 Microsoft.SqlServer.ManagedDTS 어셈블리입니다.All of the methods used in this topic to load and run packages require a reference to the Microsoft.SqlServer.ManagedDTS assembly. 새 프로젝트에 참조를 추가한 후 가져옵니다는 Microsoft.SqlServer.Dts.Runtime 포함 된 네임 스페이스는 를 사용 하 여 또는 Imports 문.After adding the reference in a new project, import the Microsoft.SqlServer.Dts.Runtime namespace with a using or Imports statement.

프로그래밍 방식으로 패키지 로드Loading a Package Programmatically

로컬 컴퓨터에서 프로그래밍 방식으로 패키지를 로드하려면 패키지가 로컬 위치에 저장되어 있든 원격 위치에 저장되어 있든 관계없이 다음 메서드 중 하나를 호출합니다.To load a package programmatically on the local computer, whether the package is stored locally or remotely, call one of the following methods:

저장소 위치Storage Location 호출할 메서드Method to Call
파일File LoadPackage
SSIS 패키지 저장소SSIS Package Store LoadFromDtsServer
SQL ServerSQL Server LoadFromSqlServer

중요

SSIS 패키지 저장소를 사용하기 위한 Application 클래스의 메서드는 ".", localhost 또는 로컬 서버의 서버 이름만 지원합니다.The methods of the Application class for working with the SSIS Package Store only support ".", localhost, or the server name for the local server. "(local)"은 사용할 수 없습니다.You cannot use "(local)".

프로그래밍 방식으로 패키지 실행Running a Package Programmatically

로컬 컴퓨터에서 패키지를 실행하는 관리 코드로 사용자 지정 응용 프로그램을 개발하려면 다음 방법이 필요합니다.Developing a custom application in managed code that runs a package on the local computer requires the following approach. 여기에 요약된 단계는 뒷부분의 예제 콘솔 응용 프로그램에서 자세히 보여 줍니다.The steps summarized here are demonstrated in the sample console application that follows.

로컬 컴퓨터에서 프로그래밍 방식으로 패키지를 실행하려면To run a package on the local computer programmatically

  1. Visual Studio 개발 환경을 시작하고 원하는 개발 언어로 새 응용 프로그램을 만듭니다.Start the Visual Studio development environment, and create a new application in your preferred development language. 이 예에서는 콘솔 응용 프로그램을 사용하지만 Windows Forms 응용 프로그램, ASP.NET Web Form 또는 Web 서비스, Windows 서비스 등에서 패키지를 실행할 수도 있습니다.This example uses a console application; however you can also run a package from a Windows Forms application, an ASP.NET Web form or Web service, or a Windows service.

  2. 프로젝트 메뉴를 클릭 하 여 참조 추가 에 대 한 참조를 추가 하 고 Microsoft.SqlServer.ManagedDTS.dll합니다.On the Project menu, click Add Reference and add a reference to Microsoft.SqlServer.ManagedDTS.dll. 확인을 클릭합니다.Click OK.

  3. Visual Basic을 사용 하 여 Imports 문 또는 C# 를 사용 하 여 가져올 계정은 Microsoft.SqlServer.Dts.Runtime 네임 스페이스입니다.Use the Visual Basic Imports statement or the C# using statement to import the Microsoft.SqlServer.Dts.Runtime namespace.

  4. 기본 루틴에 다음 코드를 추가합니다.Add the following code in the main routine. 완성된 콘솔 응용 프로그램은 다음 예와 같습니다.The completed console application should look like the following example.

    참고

    예제 코드에서는 LoadPackage 메서드를 사용하여 파일 시스템에서 패키지를 로드하는 방법을 보여 줍니다.The sample code demonstrates loading the package from the file system by using the LoadPackage method. 그러나 LoadFromSqlServer 메서드를 호출하여 MSDB 데이터베이스에서 패키지를 로드하거나 LoadFromDtsServer 메서드를 호출하여 Integration ServicesIntegration Services 패키지 저장소에서 패키지를 로드할 수도 있습니다.However you can also load the package from the MSDB database by calling the LoadFromSqlServer method, or from the Integration ServicesIntegration Services package store by calling the LoadFromDtsServer method.

  5. 프로젝트를 실행합니다.Run the project. 예제 코드에서는 SQL ServerSQL Server 예제와 함께 설치된 CalculatedColumns 예제 패키지를 실행합니다.The sample code executes the CalculatedColumns sample package that is installed with the SQL ServerSQL Server samples. 패키지 실행 결과는 콘솔 창에 표시됩니다.The result of package execution is displayed in the console window.

예제 코드Sample Code

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

실행 중인 패키지에서 이벤트 캡처Capturing Events from a Running Package

위의 예제에 표시된 대로 패키지를 프로그래밍 방식으로 실행할 경우 패키지를 실행할 때 발생하는 오류와 기타 이벤트를 캡처할 수도 있습니다.When you run a package programmatically as shown in the preceding sample, you may also want to capture errors and other events that occur as the package executes. DefaultEvents 클래스에서 상속되는 클래스를 추가하고 패키지를 로드할 때 해당 클래스에 대한 참조를 전달하여 이 작업을 수행할 수 있습니다.You can accomplish this by adding a class that inherits from the DefaultEvents class, and by passing a reference to that class when you load the package. 다음 예에서는 OnError 이벤트만 캡처하지만 DefaultEvents 클래스에서 캡처할 수 있는 다른 이벤트도 여러 가지 있습니다.Although the following example captures only the OnError event, there are many other events that the DefaultEvents class lets you capture.

로컬 컴퓨터에서 프로그래밍 방식으로 패키지를 실행하고 패키지 이벤트를 캡처하려면To run a package on the local computer programmatically and capture package events

  1. 위 예의 단계에 따라 이 예에서 사용할 프로젝트를 만듭니다.Follow the steps in the preceding example to create a project for this example.

  2. 기본 루틴에 다음 코드를 추가합니다.Add the following code in the main routine. 완성된 콘솔 응용 프로그램은 다음 예와 같습니다.The completed console application should look like the following example.

  3. 프로젝트를 실행합니다.Run the project. 예제 코드에서는 SQL ServerSQL Server 예제와 함께 설치된 CalculatedColumns 예제 패키지를 실행합니다.The sample code executes the CalculatedColumns sample package that is installed with the SQL ServerSQL Server samples. 패키지 실행 결과는 발생한 오류와 함께 콘솔 창에 표시됩니다.The result of package execution is displayed in the console window, along with any errors that occur.

예제 코드Sample Code

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

관련 항목:See Also

로컬 및 원격 실행 간의 차이점 이해 Understanding the Differences between Local and Remote Execution
로드 하 고 프로그래밍 방식으로 원격 패키지 실행 Loading and Running a Remote Package Programmatically
로컬 패키지의 출력 로드Loading the Output of a Local Package