본문 바로가기
TechNical/MS SQL

모든 DB 데이터 파일의 사용량을 한방에 확인하자!

by 강멍멍이 2007. 11. 29.
반응형

EM에서 DB 파일 사용량을 체크 할 수도 있고
DBCC SHOWFILESTATS 를 이용해서 하나하나 볼 수도 있지만
만약... DB가 전나게 많다면... ㅡ ㅡ??
그걸 일일이 마우스로 찍고 있거나 한줄씩 쿼리문을 계속 날린다?
이건 좀 뭔가... 노가다성이 다분해 보이므로... 쓸대 없이 계략을 꾸며 보았다.

컨셉은 이렇다!
  DBCC SHOWFILESTATS 를 한방에 몰아서 결과를 봅시다~

또한.. 단순하므로 개념은 이러하다!
 커서를 이용해서 USE + DBCC 로 와장창 정보를 끌어 모아서 테이블에 쑤셔 넣는다!

그리하여... 이따구 쿼리가 나오게 되었습니다.. 하하하 =ㅠ=

이 쿼리를 날리면 #size_tmp_dbcc 테이블에 결과값이 입력이 된다.
임시 테이블로 맹글꺼이므로 세션을 끝으면 삭제 된다.


그라믄 코드 들어가 봅시다~

IF EXISTS (select * from tempdb..sysobjects where name like '%#size_tmp_dbcc%')
DROP TABLE #size_tmp_dbcc

create table #size_tmp_dbcc (
fileid int,
filegroup int,
totalextents float,
usedextents float,
name varchar(1024),
filename varchar(1024)
)

declare @cmd nvarchar(50)
declare alldatabases cursor for
select name from master..sysdatabases
open alldatabases
declare @db nvarchar(128)
fetch next from alldatabases into @db

while (@@fetch_status = 0)

begin
  set @cmd = 'use ' + @db + ' dbcc showfilestats'
  insert into #size_tmp_dbcc execute(@cmd)
  fetch next from alldatabases into @db
end

close alldatabases
deallocate alldatabases

select name,totalextents*64/1024 as 'Total Size', usedextents*64/1024 as 'Used Size' from #size_tmp_dbcc
select sum(totalextents*64/1024) as 'Ext Total', sum(usedextents*64/1024) as 'Used Total' from #size_tmp_dbcc


실행하면 기본적으로 내가 보기위해서 날린 토탈 사이즈가 보일 것이다.
모든 데이터가 다 들어가 있으므로 알아서 이래저래 호작질 하믄 될 것이다.
근데... 뭐 여기서 더 건질게 있을랑가 모르겄어 -_-

... 뭐 항상 그렇듯이 오타를 조심하시고... ㅎㅎ
근데.. 이런거 포스팅 하기 귀찮아져 버렸다 =ㅅ= 뭘 위한 블로그 질인가~~~~~~~~

반응형

댓글