SQL Server veritabanındaki tablolarımın boyutunu nasıl belirleyebilirim?

SQL Server veritabanındaki MyTableın boyutu hakkında bilgi almak için yardımcı olan herhangi bir yerleşik işlev / depolanmış yordam / sorgu var mı?

Çözüm

Tek tablo için şunları kullanabilirsiniz

sp_spaceused MyTable

Bir veritabanındaki tüm tablolar için sp_msforeachtable ile aşağıdaki gibi kullanabilirsiniz

CREATE TABLE #temp (
table_name sysname ,
row_count INT,
reserved_size VARCHAR(50),
data_size VARCHAR(50),
index_size VARCHAR(50),
unused_size VARCHAR(50))
SET NOCOUNT ON
INSERT #temp
EXEC sp_msforeachtable 'sp_spaceused ''?'''
SELECT a.table_name,
a.row_count,
COUNT(*) AS col_count,
a.data_size
FROM #temp a
INNER JOIN information_schema.columns b
ON a.table_name collate database_default
= b.table_name collate database_default
GROUP BY a.table_name, a.row_count, a.data_size
ORDER BY CAST(REPLACE(a.data_size, ' KB', '') AS integer) DESC
DROP TABLE #temp
Yorumlar (0)

SSMS'de Veritabanına sağ tıklayın, Raporlar, Standart Raporlar, Üst Tablolara Göre Disk Kullanımı'nı seçin.

Rapor size tablo başına kullanılan satır ve kilobayt sayısını verecektir.

Yorumlar (0)

sys.dm_db_partition_stats (http://msdn.microsoft.com/en-us/library/ms187737.aspx) adresine bir göz atın.

Bu bağlantıda ve ayrıca http://blogs.msdn.com/b/cindygross/archive/2010/04/02/dmv-series-sys-dm-db-partition-stats.aspx adresinde bazı örnek sorgular bulunmaktadır

İhtiyaçlarınıza uyacak şekilde değiştirebilirsiniz, örneğin kümelenmemiş dizinleri filtreleyebilirsiniz. KB cinsinden boyut elde etmek için sayfa sayısını 8 ile çarpın, ardından gerekirse MB'ye dönüştürmek için 2^10 (=1024) ile bölün.

sp_spaceused (http://msdn.microsoft.com/en-us/library/ms188776.aspx) ayrıca tablo boyutu bilgisini de verecektir.

Yorumlar (0)