首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

T-SQL 腳本:批次取得所有使用者資料表的空間使用量

     編輯:關於SqlServer

腳本內容

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 避免游標效能負擔。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved