Sql-Server
按表格顯示數據和磁碟使用細分
我有一個 SQL Server 2008 R2 數據庫被多個部署的程序使用。
問題:有沒有一種簡單的方法來顯示每個表佔用了多少空間,對於數據庫中的所有表,並區分邏輯空間和磁碟空間?
如果我使用 SSMS(Management Studio),則顯示的數據庫儲存屬性為 167 MB,其中 3 MB“可用”(大小合適,但我擔心可用的 3 MB - 這是需要關注的限制嗎? ,假設我知道我有足夠的磁碟空間?)
我可以鑽入每張桌子,但這需要很長時間。
我知道我可以編寫自己的查詢和測試,但我想知道是否已經有一種簡單的(內置的?)方法可以做到這一點。
在 SSMS 中,右鍵點擊數據庫並轉到“報告”、“標準報告”、“按表列出的磁碟使用情況”。它將告訴您每個表的總大小、數據大小、索引大小和未使用的大小(以及行數)。
堆棧溢出已回答:
SELECT t.NAME AS TableName, s.Name AS SchemaName, p.rows AS RowCounts, SUM(a.total_pages) * 8 AS TotalSpaceKB, SUM(a.used_pages) * 8 AS UsedSpaceKB, (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB 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 LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.NAME NOT LIKE 'dt%' AND t.is_ms_shipped = 0 AND i.OBJECT_ID > 255 GROUP BY t.Name, s.Name, p.Rows ORDER BY t.Name