Zjištění velikosti MSSQL tabulek


SQL Server Management Studio umí informace o velikosti jednotlivých tabulek zobrazit v podobě krásného reportu. Nicméně jak si poradit, pokud chcete tyto informace zobrazit pomocí vlastní aplikace.
Řešením je níže prezentovaná uložená procedura TableStatistics

Jejím výstupem je resultset, který obsahuje pro každou tabulku v databázi následující údaje:
Name - název tabulky
Rows - počet řádků
Reserved - velikost prostoru, který je pro tabulku rezervován (v kB)
Data - objem v kB, který skutečně zabírají data
IndexSize - objem v kB, který skutečně zabírají indexy
Unused - nevyužitý objem v kB

Vytvoření procedury

CREATE PROCEDURE [dbo].[TableStatistics]

AS 

BEGIN 

    SET NOCOUNT ON

    -- Create the temporary table

    CREATE TABLE #TableStatistics (
       name              nvarchar(100),
       rows              int,
       reserved          varchar(18),
       reserved_int      int default(0),
       data              varchar(18),
       data_int          int default(0),
       index_size        varchar(18),
       index_size_int    int default(0),
       unused            varchar(18),
       unused_int        int default(0)
    )

    -- Populate table

    EXEC sp_MSforeachtable @command1="INSERT INTO #TableStatistics (name,rows,reserved,data,index_size,unused) EXEC sp_spaceused '?'"

    -- Return converted values

    SELECT 
        name AS Name,
        rows AS Rows,
        CAST(SUBSTRING(reserved, 1, CHARINDEX(' ', reserved)) AS int) AS Reserved,
        CAST(SUBSTRING(data, 1, CHARINDEX(' ', data)) AS int) AS Data,
        CAST(SUBSTRING(index_size, 1, CHARINDEX(' ', index_size)) AS int) AS IndexSize,
        CAST(SUBSTRING(unused, 1, CHARINDEX(' ', unused)) AS int) AS Unused

    FROM #TableStatistics ORDER BY Name

    -- Delete the temporary table

    DROP TABLE #TableStatistics

END 

 

Spuštění procedury

Exec TableStatistics

 

https://www.palstat.cz/ - Systém řízení kvality Ubytování ve Vrchlabí