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.

SQL Server'da Tabloların GB ve MB Boyutunu Gösteren Sorgu

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.

71 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!