
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 에서 지정한 변수이다.
실제, 호스팅을 받고 있는 서버에서 테스트한 결과 이상없이 잘 작동하였다.
참고문서들:
덧글
수고하셨습니다.
저는 여태까지 EXEC sp_spaceused 통해서 통계 값을 얻어는데..
오늘 제대로 배우고 갑니다 ^^
강좌 정말 감사합니다.
궁금해서요. 새로 DB 생성 후
바로 용량 측정해보니 : 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
저도 이상해서 다시한번 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% 사용중.. 해결책이 없나요??
그렇다면, '보고서 사용안함' 을 설정하시는게 어떨런지요.
P.S. 보고서나 로그파일의 경우, 기본사항들을 이미 저장하기 떄문에 어느정도 용량을 차지하는게 아닐까 싶네요.
보고서 사용안함 - 체크 해제.
혹시 샘플 DB 올려주실수 있으세요?
-- 설정 --
1MB 단위로 10MB까지 제한된 증가
10% 단위로 10MB까지 제한된 증가
test.mdf
test_log.ldf
fendee 님 명절 잘 보내시고 올 한해도 소원 하시는 모든 일들이 이루어 지기를 기원 합니다.
새해 복 많이 받으세요 ^^