![SQL查询某数据库各表占用磁盘空间和收缩数据库MDF文件 SQL查询某数据库各表占用磁盘空间和收缩数据库MDF文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pL2Q4Mzk3Mjg3OGZmYzE2M2NlNDgwNDc1YjY3ZDhmNjg2MS5qcGc%3D.jpg?w=700&webp=1)
![SQL查询某数据库各表占用磁盘空间和收缩数据库MDF文件 SQL查询某数据库各表占用磁盘空间和收缩数据库MDF文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pL2Q4Mzk3Mjg3OGZmYzE2M2NlNDgwNDc1YjY3ZDhmNjg2Mi5qcGc%3D.jpg?w=700&webp=1)
--查数据库中多数表占用的空间
CREATE TABLE TMP
(name varchar(50),
rows int,
reserved varchar(50),
data varchar(50),
index_size varchar(50),
unused varchar(50))
GO
INSERT INTO tmp (name,rows,reserved,data,index_size,unused)
EXEC sp_msforeachTable @Command1="sp_spaceused '?'"
SELECT *,CONVERT(int, replace(data,' KB','')) as tt FROM tmp ORDER BY tt DESC
DROP TABLE tmp
GO
--收缩可让数据库大小减小很多特别是MDF文件
ALTER DATABASE DBname
Set RECOVERY SIMPLE
Go
DBCC SHRINKDATABASE (DBname)
Go
ALTER DATABASE DBname
Set RECOVERY FULL
Go