Come calcolare lo spazio occupato dalle tabelle e dagli indici in SQL Server

A volte c’è bisogno di fare un po’ di pulizia, o comunque capire perché il nostro database è così grande.

Ecco uno script che permette di individuare tabella per tabella , indice per indice il numero di record e lo spazio su disco occupato.

Come calcolare lo spazio occupato dalle tabelle e dagli indici in SQL Server

Come calcolare lo spazio occupato dalle tabelle e dagli indici in SQL Server

 
declare @SourceDB varchar(128)
declare @sql varchar(128)
create table #tables(name varchar(128))
select @sql = ‘insert #tables select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_TYPE = ”BASE TABLE”’
exec (@sql)

create table #SpaceUsed (name varchar(128), rows varchar(11), reserved varchar(18),
data varchar(18), index_size varchar(18), unused varchar(18))
declare @name varchar(128)
select @name = ”
while exists (select * from #tables where name > @name)
begin
select @name = min(name) from #tables where name > @name
select @sql = ‘exec ..sp_executesql N”insert #SpaceUsed exec sp_spaceused ‘ + @name + ””
exec (@sql)
end
select Name NomeTabella,
cast([rows] as decimal) righe,
cast(left(reserved,len(reserved)-3) as decimal(18,2))/1024 riservato,
cast(left(data ,len(data)-3) as decimal(18,2))/1024 Dati,
cast(left(index_size ,len(index_size)-3) as decimal(18,2))/1024 Indici,
cast(left(unused ,len(unused)-3) as decimal(18,2))/1024 NonUsato
from #SpaceUsed
order by riservato desc
drop table #tables
drop table #SpaceUsed

Fabrizio Cannatelli

Autore e Founder di Informarea, sono un appassionato di informatica e tecnologia da sempre. La voglia di comunicare e di condividere sul Web le mie curiosità e le mie conoscenze, mi ha spinto a lanciarmi nel progetto di questo sito. Nato un po' per gioco e un po' per passione, oggi è diventato una grande realtà.

Fabrizio Cannatelli

Approfondimenti