14
SQL Server Integration Services Best Practices 한국마이크로소프트(유) Premier Field Engineer 한대성

Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

SQL Server Integration Services Best Practices

한국마이크로소프트(유)

Premier Field Engineer

한대성

Page 2: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

발표자 소개

• [경력] – (현)Microsoft Premier Field Engineer

– 옥션 DBA – DW System 구축/관리

– AD Consulting 책임 컨설턴트

– (2006~2008) SQL MVP

– SSIS Pocket Book (2007)

– 실젂 SQL Server MVP 53 번역 (2010)

• [활동 커뮤니티] – SQLLeader.com

Page 3: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

다룰 내용

• SSIS Pain Points

• 데이터 변환에서 매핑 처리

• 패키지 관리 최적화

• 데이터 흐름 최적화

• 패키지 보안 관리

• 패키지 모니터링

• 이기종 데이터 처리 최적화

• 패키지 마이그레이션

Page 4: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

본 세미나는 Exchange Migration 및

구축 활용 방안에 대하여 소개해 드리고자 합니다.

SSIS Pain Points

• 데이터 처리가 까다롭다 – Data Type, Size 등 암시적 허용을 허락하지 않는다.

• 패키지 개발이 어렵다

– 생소한 태스크나 변환이 많다.

• 개발 후 실행 시 처리가 안 된다

– 개발 환경에서는 잘 되는데, 서버에 등록만 하면 에러가 발생한다.

• 에러 메시지 해독하기가 어렵다

– 어디서, 무엇을, 어떻게 봐야 하는가?

• 마이그레이션이 어렵다

– DTS 패키지에서 SSIS 패키지로 어떻게 이관?

– 기졲 DTS 패키지를 그냥 쓸 수는 없나?

Page 5: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

데이터 변환에서 매핑 처리 • 유니코드(nchar, nvarchar), 비 유니코드(char, varchar)간 자동 변환

허용하지 않음

• 대상 열의 데이터 크기가 적은 경우 유효성 경고

• 호환되지 않는 데이터 타입인 경우 매핑 실패

• 해결 방법 1. 데이터 변환이나 파생 열 변환을 이용해서 원본의 데이터 타입을 변환한다.

2. 원본 쿼리에서 형 변환을 수행해서 가져옦다.

3. 변환해야 할 열이 많은 경우, 데이터 가져오기/내보내기 마법사 이용해서 자동 변환 수행 패키지로 저장한 후, 이를 복사해서 사용

Page 6: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

패키지 관리 최적화 • 패키지를 파일로 저장

– 기본 저장 방식

– TFS등을 이용해서 버젂 관리 가능

– SQL Server 없이도 패키지 실행 가능

– SQL Server 저장 방식에 비해 실행 속도가 빠름

– 파일 관리 필요 - 백업 / 파일 보안

– 사용자 키 기반 또는 암호 기반 패키지 암호화 설정 필요

• 패키지를 DB에 저장 – 기졲 DTS와 동일한 방식

– 패키지 암호화 관리를 DB에서 수행 가능

– DB Backup 만으로 패키지 백업 및 관리

– 패키지 배포, 수정 시 어려움 – 파일로 내려 받은 후, 수정하고 다시 DB에 저장

자주 추가되거나 변경될 수 있는 경우, 파일로 저장하는 것을 권장. 거의 변경이 없는 경우, DB에 저장하는 것을 권장

Page 7: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

데이터 흐름 최적화 ★ 패키지에서 발생하는 대부분의 성능 이슈는 데이터 흐름에서 발생

– Memory/Threads 등 리소스 부족

– 외부 DB 연결 및 변환 오류

– 조회(Lookup) 변환으로 인한 처리 성능 저하

• 최적화 방법 – SSIS 데이터 흐름 내에서는 가능한 한 동기식 변환만을 사용

• 동기식 변환 - 파생 열 변환, 열 복사, 멀티캐스트, 조건부 분할 등

• 반동기식 변환 – 행 샘플링

• 비동기식 변환 – 정렬, 집계

- 정렬, 집계 등의 작업은 가급적 DB 서버에서 처리하도록 구성

- 적젃한 데이터 원본 및 변환 유형 사용

• ODBC, ADO.NET 대싞 OLE DB 사용

• Local SQL Server인 경우, SQL Server 대상 사용 (Cluster 시 불가)

• Oracle인 경우, Attunity Provider(2008 Enterprise Only)

- 하나의 데이터 흐름 작업 내에는 가급적 하나의 처리 흐름만 가지도록 구성

- 데이터 연결의 Packet Size를 조젃 (ex:32767)

Page 8: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

데이터 흐름 최적화 • 데이터 이관 작업 최적화 단계

1) 데이터 원본에서 읽어오는 성능을 분석 • 데이터 원본에 다른 변환이나 대상을 제거하고, 멀티 캐스트나 조건부 분할과 같은 Dummy 변환작업

만을 연결 - 이 속도가 최대 처리 성능임

• SQL Server인 경우, 읽어오는 쿼리 튜닝 or WITH (NOLOCK) 옵션 등을 추가해서 성능 비교

• Provider 유형을 변경하면서 성능 비교 – ADO.NET, OLE DB, 기타 Provider

2) 데이터 원본에 필요한 변환을 추가해서 처리 성능 분석 • 데이터 원본에서만 읽어오는 속도와 비교 – 변환에서 처리 시간이 오래 걸리는지 판단

3) 데이터 대상을 추가해서 처리 성능 분석 • 대부분의 성능 저하는 이 단계에서 발생

• 원본에서 읽어오는 속도 및 변환을 추가했을 때의 속도와 비교

• 테이블에 저장할 때 Bulk Insert 방식으로 처리되는지, 행 단위로 처리되는지를 분석

Page 9: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

패키지 보안 관리 • 패키지를 만드는 계정과 실행하는 계정 간의 차이로 인해 암호 데이

터(Sensitive Data) 해독 오류 발생 – SQL Server 로그인 암호, FTP 사용자 암호 등

• 해결 방법 – 암호를 사용하도록 설정 – ProtectionLevel = EncryptSensitiveDataWithPassword

– SQL Agent Proxy 기능 이용

– 패키지를 DB에 저장 - ProtectionLevel=ServerStorage

– http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005SSIS&intSeq=1238

Page 10: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

패키지 모니터링 • 실행 모니터링

– SSIS의 기본 로깅 방법 이용

• 주요 이벤트 : OnPreExecute, OnPostExecute, OnTaskFailed, OnError, OnPipelineRowsSent

– Custom Monitoring Report 구성 가능

• 에러 메시지 분석

– SQL Agent Log 분석 or SSIS 패키지에서 로그 설정

– 누가 실행했으며, 어떤 단계에서 어떤 이유로 에러가 발생했는가?

– 자식 태스크가 실패하면 부모 태스크도 오류로 처리됨 • 에러를 발생시킨 원인 태스크와 희생자 태스크 구분 필요

– Event Handler의 Error Description 시스템 변수 이용해서 에러 메시지만 캡쳐

Page 11: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

패키지 모니터링

• 에러 메시지 분석

– 어떤 계정으로 실행?

– 실행 환경은? 32bit/64bit

– 최초 에러가 발생한 부분은?

– 패키지 젂체 실행 결과는?

Page 12: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

이기종 데이터베이스 연결 • Oracle

– MSDAORA • 32bit만 가능, 대상으로 사용 시 Bulk Insert 불가, 모든 문자열 데이터를 비 유니코드(DT_STR)로 처리, Oracle

하위 버젂(8.x 이하)에서만 사용 권장

– ORAOLEDB • 32bit, 64bit 버젂 별도 졲재 (모두 설치 필요), 대상으로 사용 시 Bulk Insert 불가, 모든 문자열 데이터를 유니코

드(DT_WSTR)로 처리, MSDAORA보다 성능이 좋음

– Attunity Provider • SQL 2008 Enterprise 에서 설치/사용 가능. 문자열 데이터를 원본 형태대로 처리. Bulk Insert 가능. Oracle 데이

터 처리 시 가장 성능이 좋음

• DB2 – MS OLE DB Provider for DB2 및 IBM OLE DB Provider for DB2

• 처리 성능이 비슷함

• 32bit/64bit 동시 사용 가능

– 데이터 처리 시, 젂자(Full-width) 처리 작업이 필요한 경우도 있음 SQL CLR 등을 이용

• MYSQL – ODBC를 이용한 처리

– 32bit용으로 처리를 해야 할 경우, 패키지 실행 부분에서 “Use 32 bit runtime” 옵션 체크

Page 13: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

패키지 마이그레이션 • DTS 패키지

– 32bit Application

– SSIS 패키지로 재 작성하는 것을 권장

• 패키지 마이그레이션 – 대부분의 경우, SSIS에서 자동 변환 가능

– 동적 속성 작업, 데이터 흐름 작업(Pump 작업)에서 스크립트를 사용한 경우 등 일부 형태에 대해서는 마이그레이션 불가

• 기졲 DTS 패키지 사용 방안 – SSIS 패키지로 재 작성

– SSIS 패키지 내에서 DTS 패키지 개체로 포함

– Database에 레거시(Legacy) DTS에 등록해서 사용

: dtsrun.exe를 이용해서 예약 작업 설정 가능

Page 14: Integration Services Best Practicesdownload.microsoft.com/.../Seoul/4_Tech_Deep_Dive_Track/2_SSIS_… · –SSIS의 기본 로깅 방법 이용 • 주요 이벤트 : OnPreExecute,

Q & A

SQL Server Integration Services

Best Practices