DB서버를 관리하다 보면 성능카운터를 수집하거나 모니터링 하는 일이 많습니다. 성능 모니터를 사용해서 수집 및 모니터링을 할 수도 있고 써드파티툴을 사용할 수도 있습니다.
특히 하드디스크의 용량 같은 물리적인 부분이나 OS 단의 카운터 중 제공 안 하는 것들이 있습니다. 이 부분을 따로 WMI 툴로 만들어서 볼 수도 있습니다만 이걸 CLR로 등록해서 쿼리로 바로 보도록 하겠습니다. WMI 개발에 관련된 자료는 쉽게 찾아볼 수가 있고 코드까지 만들어주는 툴도 있습니다. 예전에 한대성님이 ‘Scriptomatic2’ 도 소개해주셨습니다만 이번엔 ‘WMICodeCreator’ 이라는 툴로 해보겠습니다. (#파일첨부) 원하는 WMI클래스와 객체를 선택하면 바로 VB 또는 C# 코드를 만들어줍니다. Condition 설정도 가능합니다.
이 코드를 CLR로 등록하려면 사전에 한가지 설정을 해야 됩니다. WMI 데이터를 읽기 위해선 System.management 네임스페이스의 클래스들을 사용합니다. 그래서 데이터베이스에 사전에 System.Management 어셈블리가 등록되어 있어야 됩니다.
System.Management 어셈블리가 등록되지 않은 상태에서 컴파일을 할 경우 아래와 같은 오류를 만나게 됩니다.
김종열님께서 다른 강좌에서 많이 보여주셨기 때문에 생략하도록 하겠습니다.. 비쥬얼 스튜디오에서 C# SQL Server 프로젝트를 생성하신 후 데이터베이스 참조를 설정하시고 아래 소스를 붙여 넣으시기 바랍니다.
팝업에서 SQL Server탭의 System.Management 를 선택하시기 바랍니다. 이제 모든 준비가 끝났으니 dll을 등록하겠습니다. 배포를 하셔도 되고 빌드 후 수동으로 등록하셔도 됩니다.
쿼리를 사용하기 위해 SQL Function 을 생성하고 Function 을 실행한 결과입니다.. 쿼리에서 서버명, UserID, Password 를 환경에 맞게 수정하신 후 실행 하시기 바랍니다. 참고로 로컬일 경우 계정 검사를 하지 않습니다.
C와 D드라이브의 논리디스크 용량입니다. E와 F는 DVD드라이브와 가상드라이브입니다. 이번엔 하드디스크만 나오도록 Condition 을 설정하고 총 용량이 아닌 남은 용량을 보도록 하겠습니다. Condition 이나 WMI객체들은 ‘WMI Code Creator’ 등을 사용해서 확인하시기 바랍니다.
수집방식이 성능모니터와는 다른지 특정 카운터들은 성능모니터와 다른 값들을 보여주기도 합니다. 제한된 용도내에서 충분히 테스트 하시고 사용한다면 편리하게 쓰실 수 있을 겁니다. 참고로 WMI를 사용하기 위해 원격을 접속하는 계정은 윈도우 계정이며 Administrator 권한이 있을 경우엔 별 다른 문제가 없습니다만 보안상 Administrator 권한이 없을 경우 아래와 같이 약간 복잡한 설정을 해줘야 됩니다.
|
||||||
'연구개발 > CLR' 카테고리의 다른 글
CLR - 누적합 구하기 (0) | 2011.08.27 |
---|---|
CLR-이전행가기 udf_lag (0) | 2011.08.27 |
파일리스트 불러오기 (0) | 2009.06.22 |
CLR-server와 통신하기 (1) | 2009.06.22 |
CLR-User Definded Aggregatiion (0) | 2009.06.22 |