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
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