Vă mulțumim pentru susținere

Trebuie să știu cât de mult spațiu pe disc utilizează un tabel în SQL Server

Cred că majoritatea oamenilor știu să facă acest lucru prin intermediul interfeței GUI (tabelul cu click-dreapta, proprietățile), dar făcând acest lucru în roci T-SQL total.

0
adăugat editat

3 răspunsuri

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
0
adăugat
Este perfect. Doar ce aveam nevoie. Mulțumiri! Fiți bine pentru ca OP să marcheze acest lucru drept răspunsul potrivit.
adăugat autor Andrew

Verificați acest lucru, știu că funcționează în 2005 ( MSDN Doc ) :

Aici este pentru pub-uri DB


select *
from pubs.sys.database_files

Returnează dimensiunea și max_size.

0
adăugat

sp_spaceused tableName

unde tableName este numele tabelului pe care vrei să-l cunoști ...

0
adăugat