Finnes det noen innebygd funksjon / lagret prosedyre / spørring som er nyttig for å hente informasjon om størrelsen på MyTable
i SQL Server-databasen?
For en enkelt tabell kan du bruke
sp_spaceused MyTable
For alle tabeller i en database kan du bruke den sammen med sp_msforeachtable
på følgende måte
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
I SSMS høyreklikker du på Database, velger Reports, Standard Reports, Disk Usage by Top Tables.
Rapporten viser antall rader og kilobyte brukt per tabell.
Ta en titt på sys.dm_db_partition_stats (http://msdn.microsoft.com/en-us/library/ms187737.aspx).
Det finnes noen eksempler på spørringer på den lenken og også på http://blogs.msdn.com/b/cindygross/archive/2010/04/02/dmv-series-sys-dm-db-partition-stats.aspx.
Du kan tilpasse dem til dine behov, f.eks. filtrere inn/ut indekser som ikke er i klynger. Multipliser sidetallet med 8 for å få størrelsen i KB, og del deretter med 2^10 (=1024) for å konvertere til MB om nødvendig.
sp_spaceused (http://msdn.microsoft.com/en-us/library/ms188776.aspx) gir også informasjon om tabellstørrelse.