DB’deki tüm tablolardaki kayıt sayısı ve index boyutunu hesaplamak

Database deki tüm kayıtları tablo bazında ve diskte ne kadar yer kapladığınız sorgulamak için kullanılacak bir script.

SET nocount ON
CREATE TABLE #spaceused
 (name NVARCHAR(120) ,
 rows CHAR(11) ,
 reserved VARCHAR(18) ,
 data VARCHAR(18) ,
 index_size VARCHAR(18) ,
 unused VARCHAR(18))

DECLARE Tables CURSOR
FOR
SELECT sys.schemas.name + '.' + sys.objects.name
      FROM sys.objects
      INNER JOIN sys.schemas ON sys.objects.schema_id = sys.schemas.schema_id
      WHERE sys.objects.type = 'U'

OPEN Tables
DECLARE @table VARCHAR(128)

FETCH NEXT FROM Tables INTO @table

WHILE @@FETCH_STATUS = 0
      BEGIN
           INSERT INTO #spaceused
           EXEC sp_spaceused @table
           FETCH NEXT FROM Tables INTO @table

      END

CLOSE Tables
DEALLOCATE Tables

SELECT *
FROM #spaceused
ORDER BY CAST([rows] AS BIGINT) DESC

DROP TABLE #spaceused

EXEC sp_spaceused

Script çalıştırıldığında aşağıda görüldüğü üzere tablo bazında satır sayısı ve diskte ne kadar yer kapladığı görüntülenebilmektedir.
Sonuçlar

Bir cevap yazın