Dans SQL Server 2008, existe-t-il un moyen de générer un rapport sur la quantité d'espace disque nécessaire à chaque table?

Dans SQL Server 2008, existe-t-il un moyen de générer un rapport sur la quantité d'espace disque nécessaire à chaque table?

Je peux le faire un par un en vérifiant les propriétés de stockage, mais je me demandais s'il y avait un moyen, peut-être même une requête pour générer un tel rapport.

Oui, utilisez la procédure stockée sp_spaceused pour get cette information …

USE AdventureWorks; GO EXEC sp_spaceused N'Purchasing.Vendor'; GO 

Le résultat ressemblera à ceci:

 name rows reserved data index_size unused Vendor 104 48 KB 16 KB 32 KB 0 KB 

Pour get les statistics de toutes les tables de la database, utilisez:

 EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'" 

En plus de la réponse correcte de @ kzen , pour get un jeu de résultats unique qui est sortingable, utilisez ceci:

 declare @t table (name sysname,rows int,reserved nvarchar(40),data nvarchar(50),index_size nvarchar(50),unused nvarchar(50)) INSERT INTO @T EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'" --order by reserved space select * from @t order by CONVERT(int,LEFT(reserved,CHARINDEX(' ',reserved))) DESC 

Je suis d'accord avec la solution recommandée, mais j'ai ajouté une requête de totaux. La requête finale finale est:

  Use [DatabaseName] declare @t table (name sysname,rows int,reserved nvarchar(40),data nvarchar(50),index_size nvarchar(50),unused nvarchar(50)) INSERT INTO @T EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'" --order by reserved space select * from @t Order By [Name] -- order by CONVERT(int,LEFT(reserved,CHARINDEX(' ',reserved))) DESC SELECT Cast(Sum(Cast(Replace(reserved,' KB','') as int)) as varchar(12)) + ' KB' as Total_Reserved, Cast(Sum(Cast(Replace(data,' KB','') as int)) as varchar(12)) + ' KB' as Total_Data, Cast(Sum(Cast(Replace(index_size,' KB','') as int)) as varchar(12)) + ' KB' as Total_Index_Size, Cast(Sum(Cast(Replace(unused,' KB','') as int)) as varchar(12)) + ' KB' as Total_Unused FROM @T