[SQL Server] Trouver les tables vides et qui occupent toujours des pages de données

/*Auteur   : KHARROUBI Zouhaier

/*Date     : 07/03/2014 */

/*Objectif : Trouvrer toutes les tables vides et qui occupent toujours des fichiers de données */

/*NB       : La libération des fichiers de données pour les tables vides se fait via la commande TRUNCATE TABLE MA_TABLE */

USE MA_BASE

CREATE TABLE #InfosTable

(

table_name NVARCHAR(300)

,alloc_unit_type_desc NVARCHAR(100)

,page_count INT

,avg_page_space_used_in_percent FLOAT

,record_count BIGINT

)

INSERT INTO #InfosTable

EXEC sys.sp_MSforeachtable

'SELECT ''?'',alloc_unit_type_desc,

       page_count,

       avg_page_space_used_in_percent,

       record_count

FROM sys.dm_db_index_physical_stats(DB_ID(N''MA_BASE''), OBJECT_ID(N''?''), NULL, NULL , ''Detailed'');';

SELECT * FROM #InfosTable WHERE record_count=0 AND page_count<>0 ORDER BY table_name

DROP TABLE #InfosTable