[개요]

한 장비에서 SQL Agent를 통해 여러 SSIS 패키지를 수행하는 경우 각 SSIS 패키지별로 서로 다른 Windows 계정을 사용하여 SSIS 패키지를 수행해야 할 때가 있습니다. 예를 들어 [그림1]과 같이 각 SSIS 패키지 내에서 서로 다른 Windows 계정을 이용하여 대상 서버에 인증을 해야 하는 경우입니다. SSIS 패키지에서 이런 Windows 계정을 통한 인증은 SQL Server로 로그인, 특정 폴더나 파일 접근과 같은 작업에 필요합니다. 기본적으로 SQL Agent를 이용하여 배치 작업을 수행시 SQL Agent 시작 계정을 인증에 사용하므로 이런 경우 여러 계정을 지정할 수 없기 때문에 권한 문제가 발생하게 됩니다. 때문에 이런 경우에는 "자격 증명"과 "프록시"를 사용하여 SQL Agent에서 SSIS 패키지 작업별로 인증에 사용할 Windows 계정을 지정할 수 있습니다.

[그림 1 – 패키지별로 서로 다른 계정을 이용하여 인증]

 

 

[SQL Agent에서 특정 Windows 계정으로 SSIS 패키지 실행하기]

  1. 인증에 사용할 로컬 Windows 계정으로 Login1, Login2이 있다고 가정합니다.
  2. 먼저 자격증명을 생성하도록 하겠습니다. SSMS(SQL Server Management Studio)를 실행한 다음 "개체 탐색기 – 보안 – 자격증명 – 새 자격 증명"을 실행합니다.
  3. 다음과 같이 정보를 채워 넣습니다. 이 단계는 Login1이라는 Windows 계정을 가지고 myCredential1이라는 자격 증명을 생성하게 됩니다.
    - 자격 증명 이름 : myCredential1
    - ID : Login1
    - 암호 : Login1의 암호
  4. 확인을 눌러 자격증명 생성을 완료한 다음 동일한 방식으로 Login2를 이용하여 myCredential2를 생성합니다. 이제 SSIS 패키지 수행할 때 사용할 자격 증명 준비가 완료 되었습니다.
  5. 이번에는 프록시를 생성하도록 하겠습니다. SSMS(SQL Server Management Studio)를 실행한 다음 "개체 탐색기 – SQL Server 에이전트 – 프록시 – 새 프록시"를 실행합니다.
  6. 다음과 같이 정보를 채워 넣습니다. 이 단계는 myCredential1 자격 증명을 이용해 proxyLogin1이라는 프록시를 생성합니다.
    - 프록시 이름 : proxyLogin1
    - 자격 증명 이름 : myCredential1
    - SQL Server Integration Services 패키지 체크
  7. 생성된 프록시는 "SSIS 패키지 실행"에서 확인할 수 있으며, myCredential2 자격 증명을 이용하여 proxyLogin2를 생성합니다. 이제 작업에 사용할 프록시가 준비 되었습니다.
  8. "SQL Server작업 – 작업 – 새 작업"을 실행합니다.
  9. 새 작업 단계에서 유형을 "SQL Server Integration Services 패키지"를 선택한 다음 "다음 계정으로 실행" 영역을 보면 생성했던 proxyLogin1, proxyLogin2를 확인할 수 있습니다. 여기서 필요한 프록시를 선택하면 프록시와 연결된 자격 증명을 통해 해당 Windows 계정의 인증을 사용해 SSIS 패키지를 실행할 수 있습니다.
  10. 다음 계정으로 실행(R)에서 proxyLogin1을 선택 하여 작업을 생성했을 경우 작업 수행 시 작업의 기록 보기에서 다음과 같은 내용을 확인할 수 있습니다.

 

 

[참고자료]
자격 증명(데이터베이스 엔진)
http://msdn.microsoft.com/ko-kr/library/ms161950.aspx
SQL Server 에이전트 프록시 만들기
http://msdn.microsoft.com/ko-kr/library/ms189064.aspx
작업 구현
http://msdn.microsoft.com/ko-kr/library/ms187880.aspx

 

AND