Hyun Soo, Lim

MSDB에 저장한 SSIS 패키지의 사용자 암호를 잊어버린 경우 쉽게 확인이 가능한 방법이 있어 공유드립니다.
이렇게 쉽게 확인이 가능하다는 것을 보니 살짝 걱정이 되기도 하네요.

그럼 진짜 가능한지 테스트를 진행해보도록 하겠습니다.

1. SSIS를 msdb에 저장하고, Job으로 등록합니다.
  

2.  Job 실행구문을 조회하면 암호를 그대로 볼 수 있습니다. (노랑색으로 표기한 부분이 암호)
SELECT sjs.command
FROM msdb.dbo.sysjobs sj    
     JOIN msdb.dbo.sysjobsteps sjs ON sj.job_id = sjs.job_id   
WHERE sj.name = 'TEST_SSIS'



3. 의견
   > 중요한 SSIS에 대해서 보안을 강화하기 위해서는 암호 방식을 사용하지 말아야 할 것 같네요.
   > SQL Server 2012의 SSIS는 처음 만들어보았는데, 많이 바뀌었네요. (확대기능도 있고, msdb 저장 메뉴도 변경됨)

출처. Tale of an Encrypted SSIS Package in msdb and a Lost Password

글을 보다가 재미난 테스트 내용이 있어 공유드립니다.

테스트 내용은 연결된 서버를 통해서 데이터를 가지고 올 때 Pull/Push(땡겨오는/밀어넣는) 방식에 따른
성능 차이가 얼마나 발생하는지 비교한 내용입니다.

1. 테스트 스크립트 (5만건의 데이터 이관할 때 사용한 스크립트)

-- Push Script

insertopenquery(SQL02,'select * from testDB.dbo.target_table')select*fromsource_table;

 

-- Pull Script

inserttarget_tableselect*fromopenquery(SQL01,'select * from testDB.dbo.test')

2. 테스트 결과


3. 결과에 대한 의견
  > Pull 방식이 Push 방식에 비해서 성능이 매우 좋은 것을 볼 수 있습니다. (약 120배)
  > 대량 데이터 이관시 Pull 방식을 사용하시기를 권장합니다.
  > 단순한 쿼리를 사용한 테스트이므로 모든 경우에 Push 방식이 더 빠르다고 이야기하기는 힘들 것 같습니다.
     (Join이나 subquery가 있는 경우 결과가 달라질 수 있지 않을까 생각해봅니다.)

4. 연결된 서버 사용에 대한 개인적인 의견
  > 서비스 프로시져 내에서 연결된 서버를 사용하는 것은 권장하고 싶지 않습니다.
     이유는 1대의 DB서버 장애시 다른 DB서버까지 장애가 확대되어지기 때문입니다.
  > 필요한 부분이나 상황에 맞추어 사용할 필요는 있지만 가능한 서비스 프로시져 내에서 여러 "연결된 서버"에
     접근하는 것은 제거 또는 최소화하는 것이 좋지 않을까합니다.


출처. Linked servers and performance impact: Direction matters!



SQL Server 언플러그 세미나 - 토크쇼 때 이야기나누었던 내용 간략히 정리하여 공유드립니다.

 

이야기드리고자 했던 내용은 아래와 같습니다.

  1. 고가용성 시스템 구축시 기술에 대한 깊이 있는 검토/테스트 필요 (장단점 비교 분석)

      - 안정성을 높이기 위한 기술인데 이로 인하여 문제가 발생하면 안되겠죠.~

  2. DB 시스템보다는 서비스 측면에서의 고민 필요

 

간략히 PT와 SQL Server 2012의 고가용 기능에 대한 테스트 동영상 올립니다.

 

[SQL Server 2012 AlwaysOn Availability Group]