腳本內容
SET NOCOUNT ON;
DECLARE @TableName VARCHAR(200);
CREATE TABLE #TmpTable (
Name NVARCHAR(20),
Rows CHAR(11),
Reserved VARCHAR(18),
Data VARCHAR(18),
Index_Size VARCHAR(18),
Unused VARCHAR(18)
);
DECLARE Cur CURSOR FOR
SELECT Name FROM sysobjects WHERE xtype = 'U';
OPEN Cur;
FETCH NEXT FROM Cur INTO @TableName;
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #TmpTable EXEC sp_spaceused @TableName;
FETCH NEXT FROM Cur INTO @TableName;
END
CLOSE Cur;
DEALLOCATE Cur;
SELECT * FROM #TmpTable ORDER BY CAST(REPLACE(Reserved, ' KB', '') AS INT) DESC;
DROP TABLE #TmpTable;
GO
輸出欄位說明
- Name:資料表名稱。
- Rows:資料列數。
- Reserved:保留總空間(含資料、索引、未使用)。
- Data:資料空間。
- Index_Size:索引空間。
- Unused:未使用空間。
擴充建議
- 加入
schema_name 區分同名表。
- 將結果寫入永久資料表,排程每日收集,繪製空間成長趨勢圖。
- SQL Server 2005+ 可改用
sys.dm_db_partition_stats 避免游標效能負擔。