(ASP,MSSQL) exec sp_helpfile 를 이용해 DB 사용량 체크하기 ASP

ASP 스크립트를 이용해 현재 DB 의 사용량을 체크하면 위와 같은 내용을 출력할 수 있다.


기본적으로 exec sp_helpfile 쿼리를 이용해 출력하면 기본값이 KB 단위로 되어 있기 때문에 위와 같이 출력된다.

이것을 보여주고자 하는 방식에 따라 변형해서 위와같이 표시할 수 있다.
아래는 이를 구현하는 코드이다.

<!--#include file="dbcon.asp"-->
<%
dim sql, rs 
sql = " exec sp_helpfile
set rs = db.execute(sql)

'기본값은 KB 단위
maxsize = rs.fields("maxsize")
used = rs.fields("size")

maxsize_kb = replace(maxsize, " KB","")
used_kb = replace(used, " KB","")
unused_kb = maxsize_kb-used_kb

maxsize_mb = maxsize_kb/1024
used_mb = used_mb/1024

maxsize_bytes = maxsize_kb*1024
used_bytes = used_kb*1024
unused_bytes = maxsize_bytes-used_bytes

usedper = used_bytes/maxsize_bytes * 100

rs.close
set rs = nothing
%>
총 신청 용량 : <%=maxsize%><br>
사용중인 용량 : <%=used%><br>
남은용량 : <%=unused_kb%> KB<br>
<hr>
bytes 변환<br>
총 신청 용량(bytes) : <%=maxsize_bytes%><br>
사용중인 용량(bytes) : <%=used_bytes%><br>
남은용량(bytes) : <%=unused_bytes%><br>
<br>
사용률(%) : <%=formatnumber(usedper,2)%> %<br>

-----------------------------------

여기서 dbcon.asp 는 DB 연결구문을 담고 있는 문서이다.
db.execute 에서 db. 은 dbcon.asp 에서 지정한 변수이다.

실제, 호스팅을 받고 있는 서버에서 테스트한 결과 이상없이 잘 작동하였다.

참고문서들:


덧글

  • 초보 2012/01/15 07:47 # 삭제 답글

    fendee 님. 안녕하세요.
    수고하셨습니다.
    저는 여태까지 EXEC sp_spaceused 통해서 통계 값을 얻어는데..
    오늘 제대로 배우고 갑니다 ^^
    강좌 정말 감사합니다.
  • fendee 2012/01/15 20:35 #

    네, 감사합니다.
  • 초보 2012/01/20 11:16 # 삭제 답글

    fendee 님. 안녕하세요.
    궁금해서요. 새로 DB 생성 후
    바로 용량 측정해보니 : 20 ~ 30% 사용하고 있다고 하네요.
    테이블 없는데.. 이게 정상인가요??

    답변 부탁합니다.
  • fendee 2012/01/21 00:13 #

    새로 생성했는데 20~30% 용량을 이미 점유하고 있다면 당연히 비정상이겠지요.
    정확한 원인을 알수는 없으나, 웹검색을 해보니 로그파일이 쌓여서 그럴수도 있다는듯 하니 로그파일을 확인해보세요.(LDF 파일)
    아래의 두 링크를 참조하세요.
    http://www.okprogramming.com/index.php?mid=MSSQL&listStyle=webzine&document_srl=3310
    http://comqna.net/bbs/board.php?bo_table=windows&wr_id=111&page=4
  • 초보 2012/01/21 14:48 # 삭제 답글

    답변 감사합니다.

    저도 이상해서 다시한번 DB 생성, 제가 설정을 잘못했나요?
    죄송하지만 아래 자료 한번 봐주세요..

    1) SQL Server Management Studio -> 새데이터베이스 -> q123
    -- 설정 --
    1MB 단위로 10MB까지 제한된 증가
    10% 단위로 10MB까지 제한된 증가
    =======================================
    2) SQL Server Management Studio -> DB (q123) -> 보고서 -> 디스크 사용
    파일그룹이름 - PRIMARY
    논리적파일이름 - q123
    예약된공간 - 3.00 MB
    사용된공간 - 1.44 MB <- 여기서 어떻게 사용된 공간이 나오는 궁금합니다.
    =======================================
    3) DBCC SQLPERF(logspace) <- 쿼리문 실행
    Database Name - q123
    Log Size(MB) - 0.9921875
    Log Space Used(%) - 35.43307
    Status - 0
    =======================================
    4) DBCC LOGINFO (q123) <- 쿼리문 실행
    1.Filed - 2, FileSize - 253952, StartOffset - 8192, FSeqNo - 46,Status - 2, Parity - 64, CreateLSN - 0
    2.Filed - 2, FileSize - 253952, StartOffset - 262144, FSeqNo - 0, Status - 0, Parity - 0, CreateLSN - 0
    3.Filed - 2, FileSize - 253952, StartOffset - 516096, FSeqNo - 0, Status - 0, Parity - 0, CreateLSN - 0
    4.Filed - 2, FileSize - 278528, StartOffset - 770048, FSeqNo - 0, Status - 0, Parity - 0, CreateLSN - 0
    =======================================
    5) exec sp_helpfile <- 쿼리문 실행
    name - q123
    filename - C:Microsoft SQL ServerDATAq123.mdf
    filegroup - PRIMARY
    size - 3072 KB
    maxsize - 10240 KB
    growth - 1024 KB
    usage - data only
    ---------------------------------------
    name - q123_log
    filename - C:Microsoft SQL ServerDATAq123_log.ldf
    filegroup - NULL
    size - 1024 KB
    maxsize - 10240 KB
    growth - 10%
    usage - log only
    =======================================
    6) fendee 님이 제작한 소스 사용
    총 신청 용량 : 10240 KB
    사용중인 용량 : 3072 KB
    남은용량 : 7168 KB
    -----------------------------
    bytes 변환
    총 신청 용량(bytes) : 10485760
    사용중인 용량(bytes) : 3145728
    남은용량(bytes) : 7340032
    -----------------------------
    사용률(%) : 30.00 %
    =======================================
    7) fendee 님 조언 참고
    -- MSSQL 로그 삭제하기
    ALTER DATABASE q123 SET RECOVERY SIMPLE
    GO
    dbcc shrinkfile('q123',1)
    GO
    ALTER DATABASE q123 SET RECOVERY FULL
    GO
    ========================================
    8) 다시 DB 측정 <- 위 소스 사용
    총 신청 용량 : 10240 KB
    사용중인 용량 : 1536 KB
    남은용량 : 8704 KB
    ----------------------------------
    bytes 변환
    총 신청 용량(bytes) : 10485760
    사용중인 용량(bytes) : 1572864
    남은용량(bytes) : 8912896
    ----------------------------------
    사용률(%) : 15.00 %
    =======================================
    결론 : 로그 삭제 용량 축소 그런데 아직 15% 사용중.. 해결책이 없나요??
  • fendee 2012/01/21 21:48 #

    이런 자료만 가지고서는 정확한 판단이 힘든것 같지만, 대략 기재하신 정보를 볼때, 보고서 기본 용량이 1.44M 라면, 총 용량을 10M 로 지정했을때 이미 15% 가량을 점유하는게 아닌가요?
    그렇다면, '보고서 사용안함' 을 설정하시는게 어떨런지요.
    P.S. 보고서나 로그파일의 경우, 기본사항들을 이미 저장하기 떄문에 어느정도 용량을 차지하는게 아닐까 싶네요.
  • 초보 2012/01/22 07:42 # 삭제 답글

    fendee 님 답변 감사합니다.
    보고서 사용안함 - 체크 해제.
    혹시 샘플 DB 올려주실수 있으세요?

    -- 설정 --
    1MB 단위로 10MB까지 제한된 증가
    10% 단위로 10MB까지 제한된 증가
    test.mdf
    test_log.ldf

    fendee 님 명절 잘 보내시고 올 한해도 소원 하시는 모든 일들이 이루어 지기를 기원 합니다.
    새해 복 많이 받으세요 ^^
  • fendee 2012/01/22 21:09 #

    지금 MSSQL 을 설치할 수 있는 환경이 없어서 불가능 하군요.
  • alima 2013/08/01 10:14 # 삭제 답글

    정말 감사합니다. ^^ 초보자 한테 많은 도움이 되었습ㄴ디ㅏ.
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


통계 위젯 (화이트)

25617
4671
11048155

google_myblogSearch_side

▷검색어

Flag Counter style2