반응형

본 강좌에서 다루는 내용은 Microsoft SQL Server 2008 CTP, February 2008 을 기준으로 한 것이므로 정식 버전이 출시된 경우 실제 내용과 본 강좌의 내용이 서로 다를 수 있음을 유의하시기 바랍니다.

이번 강좌에서는 SQL Server 2008에서 새로 선보인 정책 기반 관리(Policy Based Management)에 대한 내용을 살펴보고자 합니다. 여러 대의 SQL Server를 사용하는 기업 환경에서 모든 SQL Server에 대한 일관된 관리 작업은 결코 쉽지 않습니다. 예를 들어 SQL Server의 옵션을 어떻게 설정되어야 하는지, 데이터베이스는 어떤 기준을 가지고 만들어져야 하는지 등등 다양한 정책이 기업에 존재합니다. 하지만 이러한 정책이 모든 SQL Server에 일관되게 적용되는지를 감시하고 제어하기가 쉽지 않습니다. SQL Server 2008에서는 다중 서버의 일관된 관리를 가능하게 하는 정책 기반의 관리 방법이 제공되고 있습니다.

1. 정책 관리 구성

[화면1]과 같이 Management Studio에서 관리부분을 확장하면 정책, 조건, 패싯 세 항목이 표시됩니다. 이 세 항목을 이용해 정책 기반 관리를 수행하게 됩니다.


[화면1]

2. 패싯(Facet) 확인

패싯 부분을 확장하면 [화면2]와 같이 다양한 항목이 표시됩니다.


[화면2]

패싯은 정책을 통해 관리 할 수 있는 SQL Server의 다양한 기능이라고 이야기 할 수 있습니다. 예를 들어 데이터베이스에 대한 정책을 정의 할 수 있는 데이터베이스 패싯이 있으며 테이블에 대한 정책을 정의 할 수 있는 테이블 패싯이 있습니다. [화면2]에 표시된 패싯을 더블 클릭하거나 속성을 표시해서 해당 패싯에 포함된 다양한 속성을 확인할 수 있습니다. [화면3]은 저장 프로시저 패싯의 속성을 확인한 예입니다.


[화면3]

3. 조건(Condition) 만들기

정책을 정의하기 위해서는 먼저 조건을 정의해야 합니다. 조건은 [화면2]에서 확인한 다양한 패싯 중에서 어떤 패싯에 대한 어떤 속성을 어떻게 설정 할지를 정의한 것입니다. 예를 들어 저장 프로시저이름은 'usp'로 시작되게 하겠다면 저장 프로시저 패싯의 Name 속성을 'usp'로 시작하도록 정의하는 것이 조건입니다. [화면4]와 같이 조건 항목을 우측 클릭해 새 조건(C)를 선택하여 조건을 만들 수 있습니다.


[화면4]

[화면5]는 표시된 새 조건 만들기 창에서 저장 프로시저 이름을 'usp'로 시작하도록 정의하는 화면의 예를 보여줍니다. 조건 이름저장 프로시저 이름 조건 이라고 했으며, 패싯(F) 부분에서 저장 프로시저를 선택했음을 알 수 있습니다. 또한 필드 부분에서 @Name을 선택하고 연산자LIKE를 선택했으며 에는 'usp%'를 입력해 저장 프로시저 이름이 'usp'로 시작됨을 정의한 것입니다.


[화면5]

[화면6]은 저장 프로시저 이름 조건 조건이 만들어진 결과를 보여줍니다.


[화면6]

4. 정책(Policy) 만들기

조건을 정의했으면 이제 정책을 정의하면 됩니다. 정책은 어떤 조건을 어떤 대상에 적용할 지 설정하는 것입니다. 예를 들면 저장 프로시저 이름 조건을 AdventureWorks 데이터베이스에 적용하겠다면 이에 대한 정책을 정의하면 됩니다. [화면7]과 같이 정책을 우측 클릭해 새 정책(N)을 선택하여 정책을 만들 수 있습니다.


[화면7]

[화면8]은 저장 프로시저 이름 정책을 정의하는 과정을 보여줍니다. 조건 확인(H) 부분에 적용할 조건(강좌의 경우 저장 프로시저 이름 조건) 을 선택합니다.


[화면8]

[화면9]는조건이 선택된 결과를 보여줍니다. 적용 대상(A) 부분을 보면 수준 매 Database로 표시되어 있습니다. 이는 모든 데이터베이스에 적용하겠다는 의미입니다. Every로 번역한것입니다.


[화면9]

모든 데이터베이스가 대상이 아니라면 [화면10]과 같이 새 조건을 선택해 새로운 조건을 즉시 만들어 선택할 수 있습니다.


[화면10]

[화면11]은 새 조건 만들기 창에서 AdventureWorks 데이터베이스 조건 이라는 이름의 조건을 정의하는 과정을 보여줍니다. 패싯(F) 부분에 데이터베이스 패싯을 선택했으며, @Name 필드에 대해 'AdventureWorks' 값을 지정하고 있습니다. 즉 데이터베이스 이름이 AdventureWorks인 데이터베이스만 고려하겠다는 의미입니다.


[화면11]

[화면12]는 [화면11]에서 AdventureWorks 데이터베이스 조건을 정의하고 확인 버튼을 눌러 원래의 새 정책 만들기 화면으로 돌아온 결과를 보여줍니다.


[화면12]

[화면13]은 실행 모드(E)부분에서 정의된 정책을 어떤 방법으로 실행할 지 선택하는 과정을 보여줍니다. 정의된 정책은 자동으로 실행되게 할 수도 있고 필요 시 수동으로 평가 하도록 할 수도 있습니다.


[화면13]

요청 시 실행 모드는 정책을 자동으로 실행하지 않고 필요 시 수동으로 평가하도록 하는 방법입니다. 평가에 대한 결과는 로그로 기록됩니다.

예약 시 실행 모드는 일정을 설정해 예약하면 해당 일정으로 정책에 대한 평가가 실행되도록 하는 방법입니다. 평가에 대한 결과를 로그로 기록됩니다.

변경 시 - 로그만 실행 모드는 개체에 대한 변경(생성 및 변경) 작업에 대해 실시간으로 정책이 평가되어 정책에 위배되는 경우 이에 대한 내용을 로그로 남기도록 하는 방법입니다.

변경 시 - 방지 실행 모드는 개체에 대한 변경(생성 및 변경) 작업에 대해 실시간으로 정책이 평가되어 정책에 위배되는 경우 해당 작업이 수행되지 못하도록 방지하는 방법입니다. 물론 로그도 기록됩니다.

[화면14]는 실행 모드(E) 부분에 변경 시 - 방지를 선택하고 사용(E) 부분을 체크해 실시간으로 평가되어 정책 위반 시 해당 작업이 수행되지 못하도록 하겠다고 설정한 예입니다.


[화면14]

[화면15]는 좌측의 페이지 선택에서 설명을 선택해 정책에 대한 추가적인 정보를 입력하는 화면을 보여줍니다. 이곳에 입력한 정보는 정책 위반시 표시되는 오류 메세지에 포함되어 표시됩니다. 확인 버튼을 누르면 정책 정의가 완료됩니다.


[화면15]

[화면16]은 조건과 정책이 만들어진 결과를 보여줍니다. 정책을 만드는 과정에서 정의한 AdventureWorks 데이터베이스 조건이 조건 부분에 포함되어 있음을 알 수 있습니다.


[화면16]

5. 정책 실행 여부 테스트

앞의 과정에서 만든 조건과 정책을 통해 AdventureWorks 데이터베이스에 만들어지는 모든 저장 프로시저는 'usp'로 시작되어야 합니다. 만일 이 정책에 위배되는 저장 프로시저만 만들어지면 저장 프로시저 만드는 작업은 실패하게 됩니다. [화면17]은 쿼리 창에서 AdventureWorks 데이터베이스에 GetProductInfo라는 이름의 저장 프로시저를 만드는 과정을 보여줍니다. 모든 저장 프로시저는'usp'로 시작되어야 한다는 정책에 위배되므로 오류가 표시되면서 작업이 실패 했음을 알 수 있습니다.


[화면17]

6. 수동으로 정책 평가

[화면18]과 같이 정책을 우측 클릭해 평가(V)를 선택해 해당 정책에 대한 평가를 수동으로 실행 할 수 있습니다.


[화면18]

[화면19]는 정책 평가가 실행된 결과를 보여줍니다. AdventureWorks 데이터베이스의 모든 저장 프로시저는 'usp'로 시작되어 있으므로 녹색 아이콘이 표시되고 있음을 알 수 있습니다.


[화면19]

[화면20]은 [화면19]에서 맨 아래 대상 정보 부분의 자세히 열에서 보기 링크를 클릭한 결과를 보여줍니다.


[화면20]

맺음말

이전 버전에서는 DDL 트리거를 사용해 개체에 대한 모니터링 및 제어를 할 수 있습니다. 하지만 DDL 트리거를 코딩해야 하는 번거로움을 생각하지 않을 수 없습니다. SQL Server 2008에서는 이러한 코딩에 대한 번거로움을 정책 기반 관리 기능을 통해 해소해주고 있습니다. 갈수록 증가되는 기업의 SQL Server를 정책 기반 관리를 통해 효율적으로 관리 할 수 있을 것으로 보입니다. 한 서버에서 만들어진 정책은 다른 서버, 또는 서버 그룹에 쉽게 반영 할 수 있는 정책 가져오기와 내보내기 기능이 제공되어 이러한 효율성을 더욱 증가될 것입니다. 또한 정책이 평가된 결과로 기록되는 로그를 기반으로 Agent 서버스를 이용한 Alert를 정의하여 정책에 대한 모니터링도 쉽게 할 수 있어 관리가 더더욱 쉬워질 것입니다.

 

반응형

+ Recent posts