一次性輸出所有用戶表的:表名、欄位數、記錄數、保留/使用/索引/未用空間。
EXEC sp_MSForEachTable
@precommand = N'
CREATE TABLE ##t (
id INT IDENTITY,
表名 SYSNAME,
字段数 INT,
记录数 INT,
保留空间 NVARCHAR(10),
使用空间 VARCHAR(10),
索引使用空间 VARCHAR(10),
未用空间 VARCHAR(10)
)',
@command1 = N'
INSERT ##t (表名, 记录数, 保留空间, 使用空间, 索引使用空间, 未用空间)
EXEC sp_spaceused ''?'';
UPDATE ##t SET 字段数 = (SELECT COUNT(*) FROM syscolumns WHERE id = OBJECT_ID(''?''))
WHERE id = SCOPE_IDENTITY()',
@postcommand = N'SELECT * FROM ##t ORDER BY id; DROP TABLE ##t';
sp_MSForEachTable 遍歷所有用戶表,? 代表當前表名sp_spaceused 回傳空間統計syscolumns 統計欄位數##t 彙總輸出,最後自動清理id 表名 字段数 记录数 保留空间 使用空间 索引使用空间 未用空间
1 Orders 12 15000 12 MB 10 MB 1 MB 1 MB
2 Customers 8 5000 5 MB 4 MB 500 KB 500 KB
...