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 |