2007/08/09

데이터베이스내 테이블 사용량 체크 - dba_spaceused

다음 스크립트는,. 해당 데이터베이스내 테이블별 사용량 체크를 하도록 하기 위한 사용자 저장프로시져 스크립트 일부 입니다.

스크립트:
http://www.novicksoftware.com/Articles/sql-server-table-space-reporting-sp_spaceused.htm
http://www.novicksoftware.com/Articles/dba_spaceused.zip

DECLARE @Tab sysname -- table name
      , @Sch sysname -- owner,schema

DECLARE TableCursor CURSOR FOR
    SELECT [SCHEMA], TabNAME
         FROM #tables

OPEN TableCursor;
FETCH TableCursor into @Sch, @Tab;

WHILE @@FETCH_STATUS = 0 BEGIN

 SELECT @sql = 'exec [' + @SourceDB
    + ']..sp_executesql N''insert #TabSpaceTxt exec sp_spaceused '
    + '''''[' + @Sch + '].[' + @Tab + ']' + '''''''';

 Delete from #TabSpaceTxt; -- Stores 1 result at a time
 EXEC (@sql);

    INSERT INTO #TabSpace
 SELECT @Sch
      , [TabName]
         , convert(bigint, rows)
      , convert(numeric(18,3), convert(numeric(18,3),
          left(reserved, len(reserved)-3)) / 1024.0)
                ReservedMB
      , convert(numeric(18,3), convert(numeric(18,3),
          left(data, len(data)-3)) / 1024.0) DataMB
      , convert(numeric(18,3), convert(numeric(18,3),
          left(index_size, len(index_size)-3)) / 1024.0)
                 Index_SizeMB
      , convert(numeric(18,3), convert(numeric(18,3),
          left(unused, len([Unused])-3)) / 1024.0)
                [UnusedMB]
        FROM #TabSpaceTxt;

 FETCH TableCursor into @Sch, @Tab;
END;

CLOSE TableCursor;
DEALLOCATE TableCursor;


프로시져는 exec dbo.dba_spaceused 를 실행하면 테이블별 사용량 체크가 가능합니다.^^




물론,. 이러한 통계는 EM 의 작업창 - 테이블 정보에서도 확인이 가능한 부분이기도 합니다만 스크립트의 장점은 SQL 에이젼트등을 이용한 정기적인 체크등 추가적인 작업이 가능한 이점이 있습니다.



08-mssql_table_used.png

댓글 없음:

댓글 쓰기

가장 많이 본 글