스크립트:
http://www.novicksoftware.com/Articles/sql-server-table-space-reporting-sp_spaceused.htm
http://www.novicksoftware.com/Articles/dba_spaceused.zip
, @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;
DEALLOCATE TableCursor;
프로시져는 exec dbo.dba_spaceused 를 실행하면 테이블별 사용량 체크가 가능합니다.^^
물론,. 이러한 통계는 EM 의 작업창 - 테이블 정보에서도 확인이 가능한 부분이기도 합니다만 스크립트의 장점은 SQL 에이젼트등을 이용한 정기적인 체크등 추가적인 작업이 가능한 이점이 있습니다.
08-mssql_table_used.png
댓글 없음:
댓글 쓰기