WorkaHolic

테이블과 인덱스 사이즈를 간편하게 구해주는 스크립트

2010. 4. 8. 22:33
반응형

저자: DatabaseJournal

 

 스크립트는 현재 데이터베이스에 들어있는 모든 테이블과 인덱스의 디스크 스페이스, 그리고 모든 테이블의 행 개수 등을 빠르게 알려주는 스크립트이다.

SET NOCOUNT ON
 
CREATE TABLE #TBLSize
 (Tblname varchar(80),  
 TblRows int,
 TblReserved varchar(80),
 TblData varchar(80),
 TblIndex_Size varchar(80),
 TblUnused varchar(80))
 
DECLARE @DBname varchar(80)  
DECLARE @tablename varchar(80)  
 
SELECT @DBname = DB_NAME(DB_ID())
PRINT 'User Table size Report for (Server / Database):   ' + @@ServerName + ' / ' + @DBName
PRINT ''
PRINT 'By Size Descending'
DECLARE TblName_cursor CURSOR FOR  
SELECT NAME  
FROM sysobjects
WHERE xType = 'U'
 
OPEN TblName_cursor
 
FETCH NEXT FROM TblName_cursor  
INTO @tablename
 
WHILE @@FETCH_STATUS = 0
BEGIN
   INSERT INTO #tblSize(Tblname, TblRows, TblReserved, TblData, TblIndex_Size, TblUnused)
   EXEC Sp_SpaceUsed @tablename
       
   -- Get the next author.
   FETCH NEXT FROM TblName_cursor  
   INTO @tablename
END
 
CLOSE TblName_cursor
DEALLOCATE TblName_cursor
 
SELECT  CAST(Tblname as Varchar(30)) 'Table',
        CAST(TblRows as Varchar(14)) 'Row Count',
        CAST(LEFT(TblReserved, CHARINDEX(' KB', TblReserved)) as int) 'Total Space (KB)',
        CAST(TblData as Varchar(14)) 'Data Space',
        CAST(TblIndex_Size  as Varchar(14)) 'Index Space',
        CAST(TblUnused as Varchar(14)) 'Unused Space'
FROM #tblSize
Order by 'Total Space (KB)' Desc
 
PRINT ''
PRINT '테이블 이름 순서대로...'
 
 
SELECT  CAST(Tblname as Varchar(30)) 'Table',
        CAST(TblRows as Varchar(14)) 'Row Count',
        CAST(LEFT(TblReserved, CHARINDEX(' KB', TblReserved)) as int) 'Total Space (KB)',
        CAST(TblData as Varchar(14)) 'Data Space',
        CAST(TblIndex_Size  as Varchar(14)) 'Index Space',
        CAST(TblUnused as Varchar(14)) 'Unused Space'
FROM #tblSize
Order by 'Table'
 
DROP TABLE #TblSize


반응형