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

SQL Server 資料表空間大小查詢與批次統計完整指令

     編輯:關於SqlServer

單一資料表查詢

-- 快速統計 (大量異動後可能不準)
EXEC sp_spaceused '資料表名';

-- 精確統計 (掃描資料頁,較慢)
EXEC sp_spaceused '資料表名', true;

整體資料庫大小

EXEC sp_spaceused;  -- 不帶參數顯示資料庫級別大小

所有使用者表批次統計

方法一:快速版 (僅統計資料)

EXEC sp_MSforeachtable "EXEC sp_spaceused '?'";

方法二:精確版 (大資料庫慎用)

EXEC sp_MSforeachtable "EXEC sp_spaceused '?', true";

方法三:自訂暫存表收集並排序 (推薦)

CREATE TABLE #t (
    name VARCHAR(200), rows INT, reserved VARCHAR(25),
    data VARCHAR(25), index_size VARCHAR(25), unused VARCHAR(25)
);

EXEC sp_MSforeachtable "INSERT INTO #t EXEC sp_spaceused '?'";

SELECT TOP 100 * FROM #t ORDER BY rows DESC;

DROP TABLE #t;

sp_MSforeachtable 參數詳解

參數說明
@command1第一條執行 SQL (預設佔位符 ? 代表表名)
@replacechar自訂佔位符,預設 N'?'
@command2/@command3第二、三條執行 SQL
@whereand額外 WHERE 條件篩選表 (如 AND o.name IN ('T1','T2'))
@precommand迴圈前執行 (如列印標題)
@postcommand迴圈後執行 (如列印完成訊息)

實用範例

-- 列出每表記錄數與大小
EXEC sp_MSforeachtable @command1="PRINT '?'", @command2="EXEC sp_spaceused '?'";

-- 所有資料庫大小
EXEC sp_MSforeachdb @command1="PRINT '?'", @command2="EXEC sp_spaceused";

-- 檢查所有資料庫完整性
EXEC sp_MSforeachdb @command1="PRINT '?'", @command2="DBCC CHECKDB (?)";

-- 更新特定前綴表統計
EXEC sp_MSforeachtable @whereand="AND o.name LIKE 't%'", @replacechar='*',
    @precommand="PRINT 'Updating Statistics...'",
    @command1="PRINT '*'; UPDATE STATISTICS *",
    @postcommand="PRINT 'Complete Update Statistics!'";

-- 清空所有表資料 (保留結構)
EXEC sp_MSforeachtable @command1='DELETE FROM ?';
-- 或更快
EXEC sp_MSforeachtable @command1='TRUNCATE TABLE ?';
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved