1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| SET NOCOUNT ON;
DECLARE @TbTableSize TABLE
(
name NVARCHAR(128),
rows CHAR(11),
reserved VARCHAR(18),
data VARCHAR(18),
index_size VARCHAR(18),
unused VARCHAR(18)
);
DECLARE curTables CURSOR FOR
SELECT name
FROM sys.tables
WHERE schema_id = SCHEMA_ID('dbo')
FOR READ ONLY;
DECLARE @szNomTable SYSNAME;
OPEN curTables;
FETCH NEXT FROM curTables INTO @szNomTable
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @TbTableSize
EXEC sp_spaceused @szNomTable;
FETCH NEXT FROM curTables INTO @szNomTable
END;
DEALLOCATE curTables;
UPDATE @TbTableSize
SET reserved = REPLACE(reserved, ' KB', ''),
data = REPLACE(data, ' KB', ''),
index_size = REPLACE(index_size, ' KB', ''),
unused = REPLACE(unused, ' KB', '');
SELECT name,
rows,
CAST(reserved AS INT) [Reservé (Ko)],
CAST(data AS INT) AS [Données (Ko)],
CAST(index_size AS INT) [Index (Ko)],
CAST(unused AS INT) [Libre (Ko)],
COALESCE(NULLIF(rows, 0), 1) / COALESCE(NULLIF(data, 0), 1) [Cout absolu ligne (Ko)],
COALESCE(NULLIF(rows, 0), 1) / ((COALESCE(NULLIF(data, 0), 1) + COALESCE(NULLIF(reserved, 0), 1) + COALESCE(NULLIF(index_size, 0), 1))) [Cout relatif ligne (Ko)]
FROM @TbTableSize
ORDER BY CAST(rows AS INT) DESC |
Partager