2011-12-05 210 views
0

我跑到下面的脚本来获取所有表的大小在我的数据库减少SQL Server数据库大小

SELECT t.NAME AS TableName, i.name AS indexName, SUM(p.rows) AS RowCounts, 
SUM(a.total_pages) AS TotalPages, SUM(a.used_pages) AS UsedPages, SUM(a.data_pages) 
AS DataPages, 
(SUM(a.total_pages) * 8)/1024 AS TotalSpaceMB, (SUM(a.used_pages) * 8)/1024 AS 
UsedSpaceMB, (SUM(a.data_pages) * 8)/1024 AS DataSpaceMB 
FROM sys.tables t INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id 
INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id 
INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id 
WHERE t.NAME NOT LIKE 'dt%' 
AND i.OBJECT_ID > 255 
AND i.index_id <= 1 
GROUP BY t.NAME, i.object_id, i.index_id, i.name ORDER BY OBJECT_NAME(i.object_id) 

许多表显示,在TotalSpaceMB和UsedSpaceMB列大的差异。总空间总数= 7.6GB,而UsedSpaceMB = 1.1GB。
如:表名:BOMS

行数:72747
总页数:183960
用页:23999
数据页:21752
TotalSpaceMB:1437
UsedSpaceMB:187
数据空间MB:169

我的数据也不是很大,以保证大于7GB的大小。

什么原因造成MB总大小和MB使用大小有如此大的差异,是否有减少MB大小的方法?

使用SQL Management Studio缩小数据库并没有帮助。

回答

1

有什么能在MB

  • 用于在MB总规模如此大的差异的原因,并用大小有一次数据。

  • 有人创建了带rserves的数据库,因为嘿,扩展是一个代价高昂的操作。

而且 - 哪个文件?如果例如大部分空间都在日志文件中,那么你的总和是无关紧要的 - 那么清理它们可能是一个问题。

+0

.mdf文件占用了7.6 GB的空间。日志文件非常小(大约12MB)。 – SVK

+0

然后,我打赌在预防措施。不让数据库文件在生产机器上自行增长是一种好的做法。 – TomTom

+0

好的..现在文件上的自动增长选项设置为:“通过10%无限增长”。有什么方法可以纠正设置并减小数据文件的大小 – SVK