🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / MSSQL RMOS / Veri tabanındaki tabloların boyutlarını alma database

1-) MSSQL RMOS - Veri tabanındaki tabloların boyutlarını alma database

 

/* Tablolar, isimlerine göre sıralanır */

SELECT ROW_NUMBER() OVER (ORDER BY TABLE_NAME) AS TABLE_NO, TABLE_NAME, TABLE_SCHEMA INTO #Tablo FROM INFORMATION_SCHEMA.TABLES

 

GO

 

/* Tablo verilerini tutacak geçici tablo yaratılır */

CREATE TABLE #TabloBilgileri ([Tablo Adi] varchar(128), [Satir Sayisi] varchar(11), [Toplam Alan] varchar(18), [Veri Alani] varchar(18), [Index Alani] varchar(18), [Kullanilmayan Alan] varchar(18))

 

GO

 

/* Her tablo için “exec sp_spaceused” komutu çalıştırılır */

DECLARE @sayac int

DECLARE @tablosayisi int

DECLARE @sql varchar(MAX)

 

SET @tablosayisi = (SELECT MAX(TABLE_NO) FROM #Tablo)

SET @sayac = 0

 

WHILE @sayac < @tablosayisi

BEGIN

SET @sayac = @sayac + 1

SET @sql = 'insert into #TabloBilgileri exec sp_spaceused "' + (SELECT TABLE_SCHEMA

FROM #Tablo

WHERE @sayac = TABLE_NO) + '.[' + (SELECT TABLE_NAME

FROM #Tablo

WHERE @sayac = TABLE_NO) + ']"'

EXEC(@sql)

END

 

/* KB cinsinden gösterilen tablo boyutları MB ve GB boyutlarında gösterilir */

SELECT [Tablo Adi], [Satir Sayisi], (CASE

WHEN CONVERT(varchar(50),CONVERT(bigint,LEFT([Toplam Alan],LEN([Toplam Alan])-3))/1024) < 1024  THEN CONVERT(varchar(50),CONVERT(bigint,LEFT([Toplam Alan],LEN([Toplam Alan])-3))/1024) + ' MB'

ELSE CONVERT(varchar(50),CONVERT(decimal(10,2),CONVERT(decimal,LEFT([Toplam Alan],LEN([Toplam Alan])-3))/1024/1024)) + ' GB' END) AS [Toplam Alan]

,(CASE

WHEN CONVERT(varchar(50),CONVERT(bigint,LEFT([Veri Alani],LEN([Veri Alani])-3))/1024) < 1024 THEN CONVERT(varchar(50),CONVERT(bigint,LEFT([Veri Alani],LEN([Veri Alani])-3))/1024) + ' MB'

ELSE CONVERT(varchar(50),CONVERT(decimal(10,2),CONVERT(decimal,LEFT([Veri Alani],LEN([Veri Alani])-3))/1024/1024)) + ' GB' END) AS [Veri Alani]

,(CASE

WHEN CONVERT(varchar(50),CONVERT(bigint,LEFT([Index Alani],LEN([Index Alani])-3))/1024) < 1024  THEN CONVERT(varchar(50),CONVERT(bigint,LEFT([Index Alani],LEN([Index Alani])-3))/1024) + ' MB'

ELSE CONVERT(varchar(50),CONVERT(decimal(10,2),CONVERT(decimal,LEFT([Index Alani],LEN([Index Alani])-3))/1024/1024)) + ' GB' END) AS [Index Alani]

FROM #TabloBilgileri tb

Where [Satir Sayisi] > 0

Order By [Tablo Adi]

 

/* Geçici tablolar sikinir */

 

DROP TABLE #Tablo

DROP TABLE #TabloBilgileri

 2021 Şubat 19 Cuma
 454