Rieccomi alla carica, oggi vedremo come analizzare lo spazio utilizzato all'interno del proprio database.
Possiamo utilizzare la stored procedure (come sempre non documentata) sp_MStablespace che ritorna il numero di righe, lo spazio utilizzato per i dati e lo spazio utilizzato per gli indici espressi in KB, l'utilizzo della sp è semplicissimo basta inserire come parametro il nome della tabella (es. EXEC sp_MStablespace mytable).
Ovviamente se il database è composto da diverse decine o centinaia di tabelle non è molto simpatico richiamare tabella per tabella, potremmo inserire la sp sp_MStablespace in un cursore e far ciclare tutte le tabelle ma otterremmo una collezione di resultset di non facile lettura ed inoltre non sapremmo a quale database corrisponde il resultset, per ovviare a questo "problema" ecco un piccolo esempio che permette di visualizzare i dati relativi a tutte le tabelle di un database
declare @pagesize int
select @pagesize=v.low / 1024 from master..spt_values v where v.number=1 and v.type=N'E'
select
sysobjects.id,
user_name(uid) as dbuser,
sysobjects.name as dbname,
sum(convert(int,rowcnt)) as rows,
sum(used * @pagesize) as SpaceUsed
from sysobjects inner join sysindexes on sysindexes.id=sysobjects.id
where
xtype=N'U' and (indid < 2 or indid=255)
group by
sysobjects.id,
user_name(uid),
sysobjects.name
order by
user_name(uid),
sysobjects.name
Un avvertenza il codice sopra descritto restituisce la dimensione totale della tabella incluso lo spazio occupato dagli indici.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




Stampa
Download
10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!