Integration Services(SSIS) 패키지Integration Services (SSIS) Packages

패키지는 연결, 제어 흐름 요소, 데이터 흐름 요소, 이벤트 처리기, 변수, 매개 변수 및 구성으로 이루어진 컬렉션으로 SQL ServerSQL Server Integration ServicesIntegration Services 에서 제공하는 그래픽 디자인 도구를 사용하여 조합하거나 프로그래밍 방식으로 작성합니다.A package is an organized collection of connections, control flow elements, data flow elements, event handlers, variables, parameters, and configurations, that you assemble using either the graphical design tools that SQL ServerSQL Server Integration ServicesIntegration Services provides, or build programmatically. 그런 다음 완성된 패키지를 SQL ServerSQL Server, SSISSSIS 패키지 저장소 또는 파일 시스템에 저장하거나, ssISnoversion 프로젝트를 SSISSSIS 서버에 배포할 수 있습니다.You then save the completed package to SQL ServerSQL Server, the SSISSSIS Package Store, or the file system, or you can deploy the ssISnoversion project to the SSISSSIS server. 패키지는 검색, 실행 및 저장되는 작업 단위입니다.The package is the unit of work that is retrieved, executed, and saved.

처음으로 패키지를 만들면 아무 것도 포함되어 있지 않은 빈 개체입니다.When you first create a package, it is an empty object that does nothing. 패키지에 기능을 추가하려면 하나의 제어 흐름과 선택적으로 하나 이상의 데이터 흐름을 패키지에 추가합니다.To add functionality to a package, you add a control flow and, optionally, one or more data flows to the package.

다음 다이어그램에서는 데이터 흐름 태스크 사용한 제어 흐름이 포함된 간단한 패키지를 보여 주며 이 제어 흐름에 다시 데이터 흐름이 포함됩니다.The following diagram shows a simple package that contains a control flow with a Data Flow task, which in turn contains a data flow.

하나의 제어 흐름과 데이터 흐름을 사용 하 여 패키지A package with a control flow and a data flow

기본 패키지를 만든 후 로깅 및 변수 등의 고급 기능을 추가하여 패키지 기능을 확장할 수 있습니다.After you have created the basic package, you can add advanced features such as logging and variables to extend package functionality. 자세한 내용은 패키지 기능을 확장하는 개체에 대한 섹션을 참조하십시오.For more information, see the section about Objects that Extend Package Functionality.

그런 다음 보안을 구현하거나 검사점에서 패키지를 다시 시작할 수 있게 하거나 패키지 워크플로에 트랜잭션을 통합하는 패키지 수준 속성을 설정하여 완성된 패키지를 구성할 수 있습니다.The completed package can then be configured by setting package-level properties that implement security, enable restarting of packages from checkpoints, or incorporate transactions in package workflow. 자세한 내용은 확장 기능을 지원하는 속성에 대한 섹션을 참조하십시오.For more information, see the section about Properties that Support Extended Features.

패키지의 내용Contents of a package

태스크 및 컨테이너(제어 흐름)Tasks and containers (control flow). 제어 흐름은 패키지 실행 시 실행되는 하나 이상의 태스크와 컨테이너로 구성됩니다.A control flow consists of one or more tasks and containers that execute when the package runs. 패키지 제어 흐름에서 다음 태스크나 컨테이너를 실행하기 위한 조건을 정의하거나 순서를 제어하기 위해 선행 제약 조건을 사용하여 패키지의 태스크와 컨테이너를 연결합니다.To control order or define the conditions for running the next task or container in the package control flow, you use precedence constraints to connect the tasks and containers in a package. 태스크 및 컨테이너의 하위 집합을 그룹화하여 패키지 제어 흐름에서 하나의 단위로 반복해서 실행할 수도 있습니다.A subset of tasks and containers can also be grouped and run repeatedly as a unit within the package control flow. 자세한 내용은 Control Flow을 참조하세요.For more information, see Control Flow.

데이터 원본 및 대상(데이터 흐름)Data sources and destinations (data flow). 데이터 흐름은 데이터를 추출 및 로드하는 원본과 대상, 데이터를 수정 및 확장하는 변환, 원본, 변환 및 대상을 연결하는 경로로 구성됩니다.A data flow consists of the sources and destinations that extract and load data, the transformations that modify and extend data, and the paths that link sources, transformations, and destinations. 패키지에 데이터 흐름을 추가하려면 패키지 제어 흐름에 데이터 흐름 태스크가 포함되어 있어야 합니다.Before you can add a data flow to a package, the package control flow must include a Data Flow task. 데이터 흐름 태스크는 데이터 흐름을 만들고 순서를 지정하고 실행하는 SSISSSIS 패키지의 실행 파일입니다.The Data Flow task is the executable within the SSISSSIS package that creates, orders, and runs the data flow. 패키지의 각 데이터 흐름 태스크에 대해 데이터 흐름 엔진의 별도 인스턴스가 열립니다.A separate instance of the data flow engine is opened for each Data Flow task in a package. 자세한 내용은 Data Flow TaskData Flow를 참조하세요.For more information, see Data Flow Task and Data Flow.

연결 관리자(연결)Connection managers (connections). 패키지는 일반적으로 하나 이상의 연결 관리자를 포함합니다.A package typically includes at least one connection manager. 연결 관리자는 패키지의 태스크, 변환 및 이벤트 처리기에 사용되는 데이터에 액세스하기 위한 연결 문자열을 정의하는 패키지와 데이터 원본 간의 연결입니다.A connection manager is a link between a package and a data source that defines the connection string for accessing the data that the tasks, transformations, and event handlers in the package use. Integration ServicesIntegration Services 에는 텍스트 및 XML 파일과 같은 데이터 원본, 관계형 데이터베이스, Analysis ServicesAnalysis Services 데이터베이스 및 프로젝트에 대한 연결 형식이 포함되어 있습니다. includes connection types for data sources such as text and XML files, relational databases, and Analysis ServicesAnalysis Services databases and projects. 자세한 내용은 Integration Services(SSIS) 연결을 참조하세요.For more information, see Integration Services (SSIS) Connections.

패키지 기능을 확장하는 개체Objects that extend package functionality

패키지는 이벤트 처리기, 구성, 로깅 및 변수와 같이 고급 기능을 제공하거나 기존 기능을 확장하는 추가 개체를 포함할 수 있습니다.Packages can include additional objects that provide advanced features or extend existing functionality, such as event handlers, configurations, logging, and variables.

이벤트 처리기Event Handlers

이벤트 처리기는 패키지, 태스크 또는 컨테이너에서 발생한 이벤트에 응답하여 실행되는 워크플로입니다.An event handler is a workflow that runs in response to the events raised by a package, task, or container. 예를 들어 이벤트 처리기를 사용하여 실행 전 이벤트나 오류가 발생할 때 디스크 공간을 검사하고 사용 가능한 공간이나 오류 정보를 관리자에게 보고하는 전자 메일 메시지를 보낼 수 있습니다.For example, you could use an event handler to check disk space when a pre-execution event occurs or if an error occurs, and send an e-mail message that reports the available space or error information to an administrator. 이벤트 처리기는 패키지처럼 하나의 제어 흐름과 선택적 데이터 흐름으로 구성됩니다.An event handler is constructed like a package, with a control flow and optional data flows. 패키지의 개별 태스크나 컨테이너에 이벤트 처리기를 추가할 수 있습니다.Event handlers can be added to individual tasks or containers in the package. 자세한 내용은 Integration Services(SSIS) 이벤트 처리기를 참조하세요.For more information, see Integration Services (SSIS) Event Handlers.

구성Configurations

구성은 패키지와 해당 태스크의 속성, 컨테이너, 변수, 연결 및 패키지 실행 시의 이벤트 처리기를 정의하는 속성-값 쌍의 집합입니다.A configuration is a set of property-value pairs that defines the properties of the package and its tasks, containers, variables, connections, and event handlers when the package runs. 구성을 사용하면 패키지를 수정하지 않아도 속성을 업데이트할 수 있습니다.Using configurations makes it possible to update properties without modifying the package. 패키지를 실행하면 구성 정보가 로드되어 속성 값을 업데이트합니다.When the package is run, the configuration information is loaded, updating the values of properties. 예를 들어 구성은 연결의 연결 문자열을 업데이트할 수 있습니다.For example, a configuration can update the connection string of connection.

다른 컴퓨터에 패키지를 설치하면 구성이 저장되어 패키지와 함께 배포됩니다.The configuration is saved and then deployed with the package when the package is installed on a different computer. 패키지를 설치할 때 구성의 값을 업데이트하여 다른 환경에서 패키지를 지원할 수 있습니다.The values in the configuration can be updated when the package is installed to support the package in a different environment. 자세한 내용은 패키지 구성 만들기를 참조하세요.For more information, see Create Package Configurations.

로깅 및 로그 공급자Logging and Log Providers

로그는 패키지 실행 시 수집되는 패키지에 대한 정보 컬렉션입니다.A log is a collection of information about the package that is collected when the package runs. 예를 들어 로그는 패키지 실행의 시작 시간과 종료 시간을 제공할 수 있습니다.For example, a log can provide the start and finish time for a package run. 로그 공급자는 패키지와 해당 컨테이너 및 태스크가 런타임 정보를 기록하는 데 사용할 수 있는 대상 유형과 형식을 정의합니다.A log provider defines the destination type and the format that the package and its containers and tasks can use to log run-time information. 로그는 패키지와 연결되지만 패키지의 태스크와 컨테이너는 임의의 패키지 로그에 정보를 기록할 수 있습니다.The logs are associated with a package, but the tasks and containers in the package can log information to any package log. Integration ServicesIntegration Services 에는 로깅을 위한 다양한 기본 제공 로그 공급자가 포함되어 있습니다. includes a variety of built-in log providers for logging. 예를 들어 Integration ServicesIntegration Services 에는 SQL ServerSQL Server 에 대한 로그 공급자와 텍스트 파일이 있습니다.For example, Integration ServicesIntegration Services includes log providers for SQL ServerSQL Server and text files. 사용자 지정 로그 공급자를 만들어 로깅에 사용할 수도 있습니다.You can also create custom log providers and use them for logging. 자세한 내용은 Integration Services(SSIS) 로깅을 참조하세요.For more information, see Integration Services (SSIS) Logging.

변수Variables

Integration ServicesIntegration Services 는 시스템 변수와 사용자 정의 변수를 지원합니다. supports system variables and user-defined variables. 시스템 변수는 런타임 시 패키지 개체에 대한 유용한 정보를 제공하며 사용자 정의 변수는 패키지의 사용자 지정 시나리오를 지원합니다.The system variables provide useful information about package objects at run time, and user-defined variables support custom scenarios in packages. 식, 스크립트 및 구성에 두 유형의 변수를 모두 사용할 수 있습니다.Both types of variables can be used in expressions, scripts, and configurations.

패키지 수준 변수에는 패키지에 사용 가능한 미리 정의된 시스템 변수와 패키지 범위 내의 사용자 정의 변수가 포함됩니다.The package-level variables include the pre-defined system variables available to a package and the user-defined variables with package scope. 자세한 내용은 Integration Services(SSIS) 변수를 참조하세요.For more information, see Integration Services (SSIS) Variables.

매개 변수Parameters

Integration ServicesIntegration Services 매개 변수를 사용하여 패키지 실행 시 패키지 내의 속성에 값을 할당할 수 있습니다. parameters allow you to assign values to properties within packages at the time of package execution. 프로젝트 수준에서 프로젝트 매개 변수 를 만들고 패키지 수준에서 패키지 매개 변수 를 만들 수 있습니다.You can create project parameters at the project level and package parameters at the package level. 프로젝트 매개 변수는 프로젝트가 수신하는 외부 입력을 프로젝트 내 하나 이상의 패키지에 제공하기 위해 사용됩니다.Project parameters are used to supply any external input the project receives to one or more packages in the project. 패키지 매개 변수를 사용하면 패키지를 편집하여 다시 배포할 필요 없이 패키지 실행을 수정할 수 있습니다.Package parameters allow you to modify package execution without having to edit and redeploy the package. 자세한 내용은 Integration Services&(SSIS) 매개 변수를 참조하세요.For more information, see Integration Services (SSIS) Parameters.

확장 기능을 지원하는 패키지 속성Package properties that support extended features

패키지 개체를 구성하여 검사점에서 패키지 다시 시작, 디지털 인증서로 패키지 서명, 패키지 보호 수준 설정, 트랜잭션을 사용하여 데이터 무결성 보장 등의 기능을 지원할 수 있습니다.The package object can be configured to support features such as restarting the package at checkpoints, signing the package with a digital certificate, setting the package protection level, and ensuring data integrity by using transactions.

패키지 다시 시작Restarting Packages

패키지에는 해당 태스크가 하나 이상 실패할 때 패키지를 다시 시작하기 위해 사용할 수 있는 검사점 속성이 있습니다.The package includes checkpoint properties that you can use to restart the package when one or more of its tasks fail. 예를 들어 패키지에 두 개의 다른 테이블을 업데이트하는 두 개의 데이터 흐름 태스크가 있고 두 번째 태스크가 실패할 경우 첫 번째 데이터 흐름 태스크를 반복하지 않고 패키지를 다시 실행할 수 있습니다.For example, if a package has two Data Flow tasks that update two different tables and the second task fails, the package can be rerun without repeating the first Data Flow task. 장기 실행 패키지의 경우 패키지 다시 시작 기능을 사용하면 시간을 절약할 수 있습니다.Restarting a package can save time for long-running packages. 다시 시작은 전체 패키지를 다시 실행할 필요 없이 실패한 태스크부터 패키지를 시작할 수 있다는 것을 의미합니다.Restarting means you can start the package from the failed task instead of having to rerun the whole package. 자세한 내용은 Restart Packages by Using Checkpoints을 참조하세요.For more information, see Restart Packages by Using Checkpoints.

패키지 보안Securing Packages

디지털 서명으로 패키지를 서명하고 암호 또는 사용자 키를 사용하여 암호화할 수 있습니다.A package can be signed with a digital signature and encrypted by using a password or a user key. 디지털 서명은 패키지 원본을 인증합니다.A digital signature authenticates the source of the package. 단, 패키지가 로드될 때 디지털 서명을 확인하도록 Integration ServicesIntegration Services 를 구성해야 합니다.However, you must also configure Integration ServicesIntegration Services to check the digital signature when the package loads. 자세한 내용은 디지털 서명을 사용하여 패키지 원본 확인패키지의 중요한 데이터에 대한 액세스 제어를 참조하세요.For more information, see Identify the Source of Packages with Digital Signatures and Access Control for Sensitive Data in Packages.

트랜잭션 지원Supporting Transactions

패키지에 트랜잭션 특성을 설정하면 패키지의 태스크, 컨테이너 및 연결이 트랜잭션에 조인할 수 있습니다.Setting a transaction attribute on the package enables tasks, containers, and connections in the package to join the transaction. 트랜잭션 특성으로 인해 패키지와 해당 요소는 하나의 단위로 성공하거나 실패합니다.Transaction attributes ensure that the package and its elements succeed or fail as a unit. 패키지는 다른 패키지를 실행하고 트랜잭션에 다른 패키지를 등록할 수도 있으므로 여러 개의 패키지를 하나의 작업 단위로 실행할 수 있습니다.Packages can also run other packages and enroll other packages in transactions, so that you can run multiple packages as a single unit of work. 자세한 내용은 Integration Services 트랜잭션을 참조하세요.For more information, see Integration Services Transactions.

패키지에 사용할 수 있는 사용자 지정 로그 항목Custom log entries available on the package

다음 표에서는 패키지에 대한 사용자 지정 로그 항목을 나열합니다.The following table lists the custom log entries for packages. 자세한 내용은 Integration Services(SSIS) 로깅을 참조하세요.For more information, see Integration Services (SSIS) Logging.

로그 항목Log entry DescriptionDescription
PackageStartPackageStart 패키지 실행이 시작되었음을 나타냅니다.Indicates that the package began to run.

참고: 이 로그 항목은 로그에 자동으로 기록되며Note: This log entry is automatically written to the log. 제외할 수 없습니다.You cannot exclude it.
PackageEndPackageEnd 패키지가 완료되었음을 나타냅니다.Indicates that the package completed.

참고: 이 로그 항목은 로그에 자동으로 기록되며Note: This log entry is automatically written to the log. 제외할 수 없습니다.You cannot exclude it.
진단Diagnostic 동시에 실행될 수 있는 실행 파일 수처럼 패키지 실행에 영향을 주는 시스템 구성에 대한 정보를 제공합니다.Provides information about the system configuration that affects package execution such as the number executables that can be run concurrently.

패키지의 속성 설정Set the properties of a package

**** 의 속성 SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT) 창을 사용하거나 프로그래밍 방식으로 속성을 설정할 수 있습니다.You can set properties in the Properties window of SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT) or programmatically.

SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT)를 사용하여 이러한 속성을 설정하는 방법은 패키지 속성 설정을 참조하세요.For information about how to set these properties using SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT), see Set Package Properties.

이러한 속성을 프로그래밍 방식으로 설정하는 방법은 Package을 참조하세요.For information about programmatically setting these properties, see Package.

기존 패키지를 템플릿으로 다시 사용Reuse an existing package as a template

패키지는 기본 기능을 공유하는 패키지를 작성하는 템플릿으로 자주 사용됩니다.Packages are frequently used as templates from which to build packages that share basic functionality. 기본 패키지를 작성한 다음 복사하거나 해당 패키지가 템플릿이 되도록 지정할 수 있습니다.You build the basic package and then copy it, or you can designate the package is a template. 예를 들어 파일을 다운로드하고 복사한 다음 데이터를 추출하는 패키지에 한 폴더에 있는 파일을 열거하는 Foreach 루프의 FTP 및 파일 시스템 태스크가 포함될 수 있습니다.For example, a package that downloads and copies files and then extracts the data may include the FTP and File System tasks in a Foreach Loop that enumerates files in a folder. 또한 데이터에 액세스할 플랫 파일 연결 관리자 및 데이터를 추출할 플랫 파일 원본이 포함될 수 있습니다.It may also include Flat File connection managers to access the data, and Flat File sources to exact the data. 데이터의 대상은 다양하며 기본 패키지에서 복사된 후 각각의 새 패키지에 추가됩니다.The destination of the data varies, and the destination is added to each new package after it is copied from the basic package. 또한 패키지를 만든 다음 Integration ServicesIntegration Services 프로젝트에 추가할 새 패키지의 템플릿으로 사용할 수 있습니다.You can also create packages and then use them as templates for the new packages that you add to an Integration ServicesIntegration Services project. 자세한 내용은 Create Packages in SQL Server Data Tools을 참조하세요.For more information, see Create Packages in SQL Server Data Tools.

프로그래밍 방식으로 또는 SSIS 디자이너를 사용하여 패키지를 처음 만드는 경우 GUID가 해당 ID 속성에 추가되고 이름이 Name 속성에 추가됩니다.When a package is first created, either programmatically or by using SSIS Designer, a GUID is added to its ID property and a name to its Name property. 기존 패키지를 복사하거나 템플릿 패키지를 사용하여 새 패키지를 만드는 경우 이름 및 GUID도 복사됩니다.If you create a new package by copying an existing package or by using a template package, the name and the GUID are copied as well. 이는 로깅을 사용하는 경우 로깅된 정보가 속하는 패키지를 식별할 수 있도록 패키지의 GUID 및 이름이 로그에 기록되기 때문에 문제가 발생할 수 있습니다.This can be a problem if you use logging, because the GUID and the name of the package are written to the logs to identify the package to which the logged information belongs. 따라서 새 패키지와 새 패키지를 복사된 패키지 및 로그 데이터에 있는 패키지와 구분할 수 있도록 새 패키지의 이름 및 GUID를 업데이트해야 합니다.Therefore, you should update the name and the GUID of the new packages to help differentiate them from the package from which they were copied and from each other in the log data.

패키지 GUID를 변경하려면 의 속성 창에 있는 ID SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT)속성에 GUID를 다시 생성합니다.To change the package GUID, you regenerate a GUID in the ID property in the Properties window in SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT). 패키지 이름을 변경하려면 속성 창에서 Name 속성 값을 업데이트해야 합니다.To change the package name, you can update the value of the Name property in the Properties window. 또한 dtutil 명령 프롬프트를 사용하거나 GUID 및 이름을 프로그래밍 방식으로 업데이트할 수 있습니다.You can also use the dtutil command prompt, or update the GUID and name programmatically. 자세한 내용은 패키지 속성 설정dtutil 유틸리티를 참조하세요.For more information, see Set Package Properties and dtutil Utility.

Integration ServicesIntegration Services 에는 SSISSSIS 개체 모델 외에도 두 개의 패키지 작성용 그래픽 도구인 SQL ServerSQL Server 디자이너와 SSISSSIS 가져오기 및 내보내기 마법사가 포함되어 있습니다. includes two graphical tools, SSISSSIS Designer and SQL ServerSQL Server Import and Export Wizard, in addition to the SSISSSIS object model for creating packages. 자세한 내용은 다음 항목을 참조하십시오.See the following topics for details.