SQL Server’da Tabloların GB ve MB Boyutunu Gösteren Sorgu
Herkese merhaba,
Bu yazıda SQL Server’da tabloların GB ve MB boyutunu gösteren sorgu hakkında bilgi vereceğim.
SQL Server’da bazı durumlarda tabloların GB ve MB boyutunu görmek isteyebilirsiniz.
Aşağıdaki kodu kullanarak siz de bu işlemi rahatlıkla yapabilirsiniz.
IF EXISTS (SELECT OBJECT_ID('tempdb..#Tablo'))
DROP TABLE #tablo;
IF EXISTS (SELECT OBJECT_ID('tempdb..#TabloBilgileri'))
DROP TABLE #tablobilgileri;
SELECT ROW_NUMBER() OVER (ORDER BY TABLE_NAME) AS TABLE_NO,
TABLE_NAME,
TABLE_SCHEMA
INTO #tablo
FROM INFORMATION_SCHEMA.TABLES;
GO
CREATE TABLE #tablobilgileri
(
[tablo adi] VARCHAR(128),
[satir sayisi] INT,
[toplam alan] VARCHAR(18),
[veri alani] VARCHAR(18),
[index alani] VARCHAR(18),
[kullanilmayan alan] VARCHAR(18)
);
GO
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;
SELECT *
FROM
(
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
) AS TMP
ORDER BY 2 DESC;
Yukarıdaki sorguyu çalıştırdığınızda aşağıdakine benzer bir sonuç göreceksiniz.
Görüldüğü üzere SQL Server’da tabloların GB ve MB boyutu gösterilmiş oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.