2011-12-05 164 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