J'ai besoin de savoir combien d'espace disque une table utilise dans SQL Server

Translate

Je pense que la plupart des gens savent comment faire cela via l'interface graphique (table de clic droit, propriétés), mais faire cela dans T-SQL est totalement génial.

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate
CREATE TABLE #tmpSizeChar (
     table_name sysname ,
     row_count int,
     reserved_size varchar(50),
     data_size varchar(50),
     index_size varchar(50),
     unused_size varchar(50))                              

CREATE TABLE #tmpSizeInt (
     table_name sysname ,
     row_count int,
     reserved_size_KB int,
     data_size_KB int,
     index_size_KB int,
     unused_size_KB int)   

SET NOCOUNT ON
INSERT      #tmpSizeChar
EXEC      sp_msforeachtable 'sp_spaceused ''?'''     

INSERT INTO #tmpSizeInt (
        table_name,
        row_count,
        reserved_size_KB,
        data_size_KB,
        index_size_KB,
        unused_size_KB
        )
SELECT  [table_name],
        row_count,
        CAST(SUBSTRING(reserved_size, 0, PATINDEX('% %', reserved_size)) AS int)reserved_size,
        CAST(SUBSTRING(data_size, 0, PATINDEX('% %', data_size)) AS int)data_size,
        CAST(SUBSTRING(index_size, 0, PATINDEX('% %', index_size)) AS int)index_size,
        CAST(SUBSTRING(unused_size, 0, PATINDEX('% %', unused_size)) AS int)unused_size
FROM #tmpSizeChar   

/*
DROP TABLE #tmpSizeChar
DROP TABLE #tmpSizeInt
*/

SELECT * FROM #tmpSizeInt
ORDER BY reserved_size_KB DESC
La source
Translate

nom_table sp_spaceused

où tableName est le nom de la table que vous souhaitez connaître ....

La source
Translate

Regarde ça, je sais que ça marche en 2005 (Documentation Microsoft):

Voici pour les pubs DB


select *
from pubs.sys.database_files

Renvoie la taille et la taille_max.

La source