SSIS란 무엇인가?
마이크로소프트 SQL Server Integration Services(SSIS)는 기업 환경에서 데이터 통합 및 데이터 변환 작업을 구축하기 위한 엔터프라이즈급 플랫폼입니다.
SSIS는 마이크로소프트의 관계형 데이터베이스 관리 시스템(RDBMS)인 SQL Server에 기본 내장되어 있어, SQL Server 개체와 데이터를 손쉽게 관리할 수 있습니다. 또한 데이터 정제(Cleansing)와 데이터 마이닝, 다양한 소스에서의 추출·적재·변환(ELT) 프로세스 실행, 파일 복사 및 다운로드, 데이터 웨어하우스 적재 등 폭넓은 데이터 관련 업무를 수행하고 관리하는 데 매우 유용합니다.
SSIS는 여러 관계형 데이터베이스는 물론 XML 데이터 파일, 플랫 파일(flat file)과 같은 다양한 소스에서 데이터를 추출·변환·통합한 뒤, 가공된 정보를 엔터프라이즈 데이터 웨어하우스나 기타 대상 시스템에 적재할 수 있습니다. 통합 프로그램의 개발과 테스트를 위한 도구 세트인 'SQL Server Data Tools'와 배포·실행을 담당하는 서버 구성 요소가 함께 제공되며, 통합 루틴의 관리와 모니터링을 위해 SQL Server Management Studio도 SSIS에 통합되어 있습니다.

SSIS 아키텍처
SSIS 아키텍처의 핵심 요소는 두 개의 엔진입니다. 이 두 엔진은 SSIS 서비스 내에서 데이터 이동·변환 작업과 패키지 제어 흐름 및 관리 작업을 분리하는 역할을 합니다.
데이터 흐름 엔진(Data Flow Engine)
데이터 흐름 엔진은 SSIS 아키텍처에서 데이터 흐름 관련 작업을 전담하는 고성능 특화 구성 요소입니다. 즉, 서로 다른 여러 소스로부터 데이터를 추출하고 변환하여 적재하는 일을 담당합니다.
SSIS의 모든 데이터 흐름 태스크에는 데이터 흐름 구성 요소가 포함됩니다. 이는 데이터가 데이터 흐름 엔진 안에서 어떻게 이동하고 변환될지를 정의하는 소스(Source), 변환(Transformation), 대상(Destination)입니다. 이러한 추가 개체들은 데이터 흐름 엔진을 프로그래밍하여 자동으로 생성·구성할 수 있으며, 개발자가 직접 엔진을 프로그래밍해 사용자 지정 개체를 만드는 것도 가능합니다.
런타임 엔진(Run-time Engine)
SSIS 런타임 엔진은 패키지의 관리 및 실행 방식을 제어합니다. 실행 순서, 로깅, 변수, 이벤트 처리 등 SSIS가 필요로 하는 제어 흐름과 패키지 관리 인프라를 구현합니다. 이 인프라를 통해 개발자는 엔진을 프로그래밍하여 패키지를 자동으로 생성·구성·실행하고 실행 흐름을 제어할 수 있으며, 로깅 옵션, 이벤트 핸들러, 변수 설정도 가능합니다.
데이터 흐름 엔진과 런타임 엔진 외에 SSIS 아키텍처의 주요 요소는 다음과 같습니다.
- SSIS 디자이너(SSIS Designer)
- SSIS 마법사(Wizards)
- 사용자 지정 애플리케이션
- 명령줄 유틸리티
그 외에도 로그 공급자, 데이터 원본, 이벤트 핸들러, 열거자(Enumerator), 태스크/사용자 지정 태스크, 데이터 흐름 구성 요소/사용자 지정 데이터 흐름 구성 요소 역시 SSIS 아키텍처를 구성하는 요소입니다.
SSIS의 주요 기능
마이크로소프트 SQL Server Integration Services는 기업의 데이터 통합과 변환 작업을 간소화하는 다양한 기능을 제공합니다. 우선 기본 제공되는 데이터 원본 커넥터가 있으며, SQL Server 가져오기 및 내보내기 마법사를 통해 SQL Server, MySQL, PostgreSQL, Azure Blob Storage, Oracle, Excel 등 널리 사용되는 데이터 원본에 손쉽게 연결할 수 있습니다. 또한 수많은 기본 제공 태스크와 변환 기능을 갖추고 있고, 개발자가 필요에 따라 사용자 지정 태스크를 직접 작성할 수도 있습니다.
그 밖의 유용한 기능은 다음과 같습니다.
- Hadoop/HDFS 커넥터 및 태스크
- ODBC(Open Database Connectivity) 원본 및 대상
- Azure 데이터 원본 커넥터 및 태스크
- 기본 데이터 프로파일링 도구
이러한 기능들은 SQL Server의 Standard 에디션과 Enterprise 에디션 모두에서 사용할 수 있습니다.
SQL Server Enterprise 에디션에서는 다음과 같은 추가 고급 기능도 제공됩니다.
- 고급 원본 및 대상: Oracle/Teradata 원본, Attunity 대상, SAP BW 원본·대상, 차원 처리(Dimension Processing) 대상 등
- 고급 태스크 및 변환: 데이터 마이닝 쿼리 변환, 퍼지 그룹화(Fuzzy Grouping), 퍼지 조회(Fuzzy Lookup) 변환 등
SSIS 프로그래밍
SSIS 내부의 두 엔진, 즉 데이터 흐름 엔진과 런타임 엔진은 프로그래밍을 통해 자동화하고 확장할 수 있으며, 이를 통해 조직의 통합 요구 사항에 맞게 조정할 수 있습니다. 실제로 SSIS를 프로그래밍한다는 것은 바로 이 두 엔진을 프로그래밍하는 것을 의미합니다. 두 엔진은 네이티브 코드로 작성되어 있지만, SSIS 개체 모델(Object Model)을 통해 접근할 수 있습니다.
SSIS를 프로그래밍할 때 개발자는 사용자 지정 데이터 흐름 구성 요소(원본, 변환, 대상)를 작성하여 패키지를 확장할 수 있습니다. 이렇게 만든 구성 요소는 그래픽 도구인 SSIS 디자이너 내에서 사용할 수 있게 되며, 패키지에 사용자 지정 기능을 부여합니다. 또 다른 방법으로는 다른 애플리케이션에서 코드를 통해 패키지를 생성·구성·실행하는 것이 있습니다.
개발자는 SSIS와 기본 제공 구성 요소의 기능을 확장하는 코드를 자유롭게 작성할 수 있습니다. SSIS 개체 모델의 기본 클래스를 출발점으로 삼아 연결 관리자(Connection Manager), 태스크, 열거자, 로그 공급자, 데이터 흐름 구성 요소 같은 사용자 지정 통합 요소를 만들면 여러 패키지에서 재사용할 수 있습니다.
단일 패키지 안에서 일회성(재사용 불가)으로 확장 기능을 만들고 사용하려는 경우에는 스크립트 태스크(Script Task)에 코드를 작성한 뒤 원본, 변환 또는 대상으로 구성하면 됩니다. 이 방식에서는 SSIS가 인프라 코드를 자동 생성해 주므로, 사용자는 필요한 사용자 지정 기능 개발에만 집중할 수 있습니다.
또한 SSIS는 사용자가 패키지를 동적으로 생성하고 프로그래밍 방식으로 조작할 수 있게 해줍니다. 기존 패키지를 수정 없이 그대로 불러오거나 일부 재구성해서 사용할 수 있고, 패키지를 템플릿으로 불러온 뒤(예: 다른 데이터 원본에 맞게) 재구성하여 실행하는 것도 가능합니다. 물론 새로운 패키지를 만들어 실행할 수도 있으며, 이러한 패키지에는 개체별·속성별로 세부 구성된 구성 요소를 포함시킬 수 있습니다.
개발자는 C# 등 .NET 호환 언어 중 자신이 선호하는 언어로 SSIS를 프로그래밍할 수 있습니다. SSIS가 마이크로소프트 .NET Framework를 완전히 지원하고, 유연한 확장과 프로그래밍을 위한 다양한 기능을 담은 SSIS 개체 모델을 제공하기 때문입니다.
.NET SDK(Software Development Kit)에는 Visual Basic과 C# 컴파일러 및 관련 개발 도구가 포함되어 있습니다. Visual Studio를 비롯해 어떤 코드 편집기나 텍스트 편집기든 사용하여 패키지, 사용자 지정 태스크 및 구성 요소를 프로그래밍하고 SSIS 코드 프로젝트를 컴파일·빌드할 수 있습니다.
.NET 호환 언어로 SSIS를 프로그래밍할 때 개발자가 유의할 점이 있습니다. .NET Framework는 SQL Server 설치 시 기본적으로 함께 설치되지만, .NET SDK는 그렇지 않으므로 Visual Studio에서 SQL Server 문서를 사용하려면 별도로 설치해야 합니다. 또한 SSIS API는 VBScript 등 COM 기반 스크립팅 언어와 호환되지 않는다는 점도 기억해야 합니다.
SSIS 개체 모델
SSIS 개체 모델은 완전히 관리형(managed) 방식으로 구현되어 있으며, 데이터 흐름 엔진과 런타임 엔진을 프로그래밍 가능한 형태로 제공합니다. 사용자는 메타데이터 기반 패키지를 포함한 패키지를 코드 한 줄 한 줄 프로그래밍 방식으로 생성·구성한 뒤, 어떤 관리형 프로그래밍 언어로든 해당 패키지를 실행할 수 있습니다. 개체 모델을 사용하면 사용자 지정 태스크와 기타 패키지 개체도 코딩할 수 있으며, 사실상 SSIS 패키지의 거의 모든 측면을 프로그래밍하고 확장할 수 있습니다.
개체 모델과 더불어 개발자는 코드 없이(no-code) 데이터 변환 및 통합 솔루션을 만들 수 있는 그래픽 도구인 SSIS 디자이너를 활용할 수 있습니다. SSIS 개체 모델과 노코드 도구의 결합은 복잡한 비즈니스 과제 해결을 위해 데이터를 추출하고 변환하는 강력한 조합을 제공합니다.
SSIS의 핵심 구성 요소
마이크로소프트 SQL Server Integration Services는 SQL Server와 Azure Data Factory의 SSIS Integration Runtime을 위한 완전한 데이터 통합·데이터 변환 플랫폼입니다. SSIS에는 다음과 같은 요소들이 포함됩니다.
- 기본 제공 태스크(Tasks)
- 기본 제공 변환(Transformations)
- SSIS 디자이너 그래픽 도구
- SSISDB 카탈로그(Database Catalog)
태스크(Task)
태스크는 SSIS 패키지 내부의 제어 흐름 요소입니다(하나의 패키지는 제어 흐름에서 서로 연결되고 순서가 지정된 여러 태스크를 가질 수 있습니다). 각 SSIS 태스크는 패키지 제어 흐름에서 수행될 작업 단위를 정의합니다. SSIS는 데이터 흐름 태스크, 데이터 준비 태스크, 워크플로 태스크, SQL Server 태스크 등 다양한 태스크 유형을 지원하며, 개발자는 .NET 프로그래밍 언어나 COM 지원 언어로 사용자 지정 태스크를 작성할 수 있습니다.
변환(Transformation)
SSIS에서 변환은 패키지 안에서 데이터를 집계, 병합, 분배, 수정하는 구성 요소입니다. SSIS는 다양한 기능을 수행하는 여러 종류의 변환을 제공합니다. 예를 들어 비즈니스 인텔리전스(BI) 변환은 데이터 정제나 데이터 마이닝 같은 BI 작업을 수행하고, 행(Row) 변환은 열 값을 갱신하거나 새 열을 생성합니다. 태스크와 마찬가지로 개발자가 비즈니스 요구에 맞는 사용자 지정 변환을 작성할 수 있으며, 이러한 변환은 동기식 또는 비동기식 출력을 가질 수 있습니다.
SSIS 디자이너
SSIS 디자이너는 사용자 친화적인 탭, 대화 상자, 창을 갖춘 그래픽 도구입니다. 개발자는 이 도구를 통해 패키지의 제어 흐름이나 데이터 흐름 구성, 패키지에 이벤트 핸들러 추가, 변경 사항 실행 취소/다시 실행, 런타임 시 패키지 실행 진행 상황 확인 등 광범위한 데이터 관련 작업을 코드 한 줄 없이 손쉽게 수행하고 관리할 수 있습니다. 참고로 SSIS 디자이너에서 패키지를 만들거나 수정하는 데는 SSIS 서비스가 실행 중일 필요가 없습니다.
SSISDB 카탈로그
SSISDB 카탈로그는 프로젝트, 패키지, 매개 변수, 환경, 운영 이력 같은 개체를 저장합니다. SSIS 내에서 프로젝트를 배포하려면 반드시 필요한 요소입니다. SSISDB 카탈로그를 활용하면 다음 작업이 가능합니다.
- SSISDB의 뷰(View)를 쿼리하여 카탈로그에 저장된 개체 검토
- SSISDB의 저장 프로시저를 호출하여 개체 관리
SSISDB 카탈로그는 온프레미스에서 실행할 수 있습니다. 또한 조직은 온프레미스 SSIS 워크로드를 Azure로 이전할 수 있는데, 이를 통해 운영 비용을 절감하고 가용성과 확장성을 높일 수 있습니다. 익숙한 도구인 SQL Server Management Studio(SSMS) 등을 사용하여 Azure SQL Database의 SSISDB 카탈로그에서 SSIS 프로젝트와 패키지를 배포·실행·관리할 수 있습니다.
SQL Server 2025 Integration Services의 최신 기능
2025년 7월 기준, 최신 버전의 SQL Server Integration Services는 v17.x(미리 보기, Preview)입니다. 이 버전에는 새로운 기능 하나와 주요 변경 사항(Breaking Change), 그리고 몇 가지 사용 중단(Deprecated) 및 제거된 변경 사항이 포함되어 있습니다.
SQL Server 2025(17.x) 미리 보기 Integration Services의 새로운 기능은 ADO.NET 연결 관리자가 이제 마이크로소프트 SqlClient Data Provider를 지원한다는 점입니다. 이 연결 관리자를 사용하면 패키지가 .NET 공급자를 통해 SQL Server 같은 데이터 원본에 접근할 수 있으며, SSIS는 연결 관리자를 생성하고 속성을 설정합니다(프로그래밍 방식 또는 SSIS 디자이너를 통해 수행 가능).
SSIS 17.x의 주요 변경 사항은 SSIS 2025로 업그레이드하면서 .NET API인 Microsoft.SqlServer.Dts.Runtime 네임스페이스(Namespace)를 사용하는 조직에 영향을 줍니다. Execute SQL Task가 포함된 패키지나 SMO(SQL Server Management Objects)에 의존하는 특정 SSIS 태스크가 있는 경우, 네임스페이스를 계속 사용하려면 프로젝트가 참조를 업데이트하고 다시 빌드해야 합니다.
SQL Server 2025(17.x) 미리 보기 Integration Services에서 사용이 중단된 기능은 다음과 같습니다.
- SQL Server Management Studio 레거시 SSIS 서비스
- Integration Services 32비트 모드(현재 및 향후 버전의 도구는 64비트만 지원)
- SqlClient Data Provider(SDS) 연결 형식(마이크로소프트는 ADO.NET 연결 형식으로의 마이그레이션을 권장)
SQL Server 2025 미리 보기 Integration Services에서 제거된 기능은 다음과 같습니다.
- Attunity의 CDC(Change Data Capture) 구성 요소 및 Oracle용 CDC 서비스
- Oracle용 Microsoft Connector
- Hadoop Hive Task, Hadoop Pig Task, Hadoop File System Task 구성 요소
이전 버전 SSIS의 개선 사항
SQL Server 2016
SQL Server 2016에는 SSISDB 업그레이드 마법사가 도입되었습니다. 이 도구를 사용하면 IT 관리자가 카탈로그 데이터베이스가 현재 SQL Server 버전보다 오래된 경우 이를 업그레이드할 수 있으며, 백업으로부터 복원이 필요한 일부 재해 복구 시나리오에서도 활용할 수 있습니다. SSISDB 마법사는 카탈로그 데이터베이스를 사용 중인 SQL Server 버전에 맞게 업그레이드해 줍니다.
또한 SQL Server 2016 Integration Services는 관리자가 SSIS 카탈로그 데이터베이스를 AlwaysOn 가용성 그룹(AlwaysOn Availability Group)에 추가할 수 있게 했습니다. 패키지 관리 기능도 개선되어, 관리자가 컨테이너나 제어 흐름 태스크를 Integration Services를 통해 재사용 가능한 템플릿으로 저장할 수 있게 되었습니다. 아울러 SQL Server 2016에는 Azure용 SSIS Feature Pack이 포함되어, 관리자가 Azure 데이터 원본에 연결하고 Azure 클라우드와 온프레미스 데이터 원본 간에 데이터를 전송할 수 있습니다.
마이크로소프트는 2016년에 SSIS용 커넥터도 발표했는데, SQL Server 2016용 SAP Business Warehouse Connector, Oracle 및 Teradata용 Connector 4.0 버전, Analytics Platform System Appliance Update 5용 Connector 등이 여기에 해당합니다.

SQL Server 2017
SQL Server 2017은 여러 대의 머신에서 SSIS를 더 쉽게 실행할 수 있게 해주는 Scale Out for SSIS 같은 새로운 SSIS 기능을 선보였습니다. 관리자는 전체 Scale Out 배포의 단일 장애점(Single Point of Failure)을 피할 수 있습니다. 또한 Scale Out Worker의 실행 로그 장애 조치(Failover) 처리가 개선되어, Scale Out Worker가 갑자기 중단되더라도 실행 로그가 로컬 디스크에 지속 저장됩니다.
아울러 SSIS 카탈로그에는 SSIS 패키지의 기본 실행 모드를 지정하는 새로운 전역 속성이 추가되었습니다. 이는 IT 관리자가 runinscaleout 매개 변수를 null로 설정하여 저장 프로시저를 호출할 때 적용됩니다.
SSIS의 역사
마이크로소프트 SSIS는 SQL Server 2005와 함께 도입되었으며, 이전의 통합 도구였던 DTS(Data Transformation Services)를 대체했습니다. 1998년 SQL Server 7.0과 함께 DTS가 출시되기 전에는 데이터베이스 관리자들이 직접 사용자 지정 데이터 변환 도구를 작성하거나 서드파티 도구를 사용해 데이터를 전송해야 했습니다.
마이크로소프트는 지난数 년간 SSIS에 다양한 기능을 추가해 왔습니다. 패키지를 구축하고 디버깅할 수 있는 그래픽 도구와 마법사, FTP(파일 전송 프로토콜) 작업 같은 워크플로 기능, SQL 문 실행 기능, 이메일 전송 기능, ETL용 데이터 원본 및 대상, 데이터 수집·정제·병합·복사를 위한 변환, 관리 서비스, 패키지 실행 및 저장 관리 기능, SSIS 개체 모델용 API 등이 그 예입니다. 특히 가장 인기 있는 기능으로는 데이터 가져오기/내보내기 마법사와 기본 제공 데이터 원본 커넥터를 꼽을 수 있습니다.
SSIS 지원 현황
SSIS는 버전에 종속적이므로, 사용자는 자신의 SQL Server 에디션과 일치하는 버전의 SSIS를 사용해야 합니다. 또한 SSIS는 SQL Express 또는 Workgroup 에디션에서는 지원되지 않습니다. SSIS 디자이너와 런타임 구성 요소, 기본 데이터 프로파일링 도구, 사전 구축된 변환을 사용하려면 Standard, Business Intelligence 또는 Enterprise 에디션을 구매해야 하며, 고급 어댑터와 고급 변환은 Enterprise 에디션에서만 제공됩니다.