если ваша таблица представляет собой кучу, то пространство не освобождается при удалении строк. Вам нужно будет создать кластеризованный индекс, чтобы освободить пространство (и впоследствии удалить кластеризованный индекс, чтобы в конце была куча)
create table dbo.myheap
(
id int identity,
col char(500) not null
);
go
insert into dbo.myheap(col)
select top (10000) a.name
from master.dbo.spt_values as a
cross join master.dbo.spt_values as b;
go
exec sp_spaceused 'dbo.myheap' --myheap 10000 5384 KB 5336 KB 8 KB 40 KB
go
--delete all rows
delete dbo.myheap;
go
--space is not freed
exec sp_spaceused 'dbo.myheap' --myheap 0 5384 KB 5336 KB 8 KB 40 KB
go
--from heap to clustered
create clustered index clxheaptocluster on dbo.myheap(id);
go
exec sp_spaceused 'dbo.myheap' --myheap 0 0 KB 0 KB 0 KB 0 KB
go
--cleanup
drop table dbo.myheap
go
Для кластеризованных таблиц перестройте кластеризованный индекс (или ВСЕ):
ALTER INDEX ALL /*clusteredindexname*/ ON dbo.myclusteredtable REBUILD;