SQL Server Veritabanlarınızın Boyutunu Anlamak

Veritabanı yönetimi dünyasında sıkça karşılaşılan bir soru şudur: SQL Server’daki tüm veritabanlarının toplam boyutunu nasıl belirleyebilirim? Bu, alanı ve kaynakları etkili bir şekilde yönetmesi gereken veritabanı yöneticileri için önemli bir görevdir. Veritabanı büyümesini izlemek, kapasite planlamak veya depolama kullanımını takip etmek isterken, SQL Server veritabanlarınızın boyutunu bilmek hayati öneme sahiptir.

SQL Server, veritabanlarınızın toplam boyutunu ve kullanımını göstermek için basit bir yol sunmaktadır. Aşağıda, SQL Server veritabanlarınızın kapladığı alan hakkında tamamen bir içgörü elde etmek için uygulayabileceğiniz bir saklı yordam ile sizi yönlendireceğiz; bu, SQL Server 2008’e kadar olan sürümler için geçerlidir.

Çözüm: Saklı Yordam

Veritabanı boyutlarını bulmak için, kullanılan toplam alanı, mevcut alanı özetleyen ve her veritabanının veri ve günlük dosyaları hakkında temel bilgiler sağlayan bir saklı yordam oluşturacağız. Bunu adım adım inceleyelim.

Adım 1: Saklı Yordamın Oluşturulması

sp_SDS adında bir saklı yordam oluşturmak için aşağıda verilen adımları takip edebilirsiniz:

USE master;
GO

IF OBJECT_ID('dbo.sp_SDS', 'P') IS NOT NULL
  DROP PROCEDURE dbo.sp_SDS;
GO

CREATE PROCEDURE dbo.sp_SDS 
  @TargetDatabase sysname = NULL,     --  NULL: tüm veritabanları
  @Level varchar(10) = 'Database',    -- Seçenekler: "Veritabanı", "Dosya"
  @UpdateUsage bit = 0,               -- Varsayılan güncelleme yok
  @Unit char(2) = 'MB'                -- Birimler: Megabayt, Kilobayt, Gigabayt
AS

Adım 2: Başlangıç Ayarları

Saklı yordam içinde, başlangıç kontrolleri yapar ve veritabanı bilgilerini tutmak için geçici tablolar oluştururuz:

  • Hedef Veritabanasını Kontrol Et: Belirli bir veritabanası isteniyorsa, onun varlığını kontrol ederiz.
  • Geçici Tablo Oluşturma: Toplam boyut, kullanılan alan ve boş alan gibi veritabanı istatistiklerini depolamak için tablolar oluştururuz.

Adım 3: Veritabanı Bilgilerini Toplama

Daha sonra, SQL Server’daki veritabanları hakkında ayrıntılar toplarız. Toplayacağımız ana unsurlar şunlardır:

  • Veritabanı Adı
  • Tür (Veri veya Günlük)
  • Mantıksal Adı
  • Toplam Boyut
  • Kullanılan Boyut ve Boş Alan

Bu verileri nasıl alıyoruz:

SELECT 
  @String = 'INSERT INTO dbo.##Tbl_CombinedInfo (DatabaseName, type, LogicalName, PhysicalName, T) '
  + 'SELECT DB_NAME(), {...} FROM sysfiles WHERE DB_NAME() = @DatabaseName';
EXEC (@String);

Adım 4: Boyutları Hesaplama

Gerekli verileri topladıktan sonra, kullanılan ve boş alan yüzdelerini belirlemek için hesaplamalar yaparız:

  • Her dosyanın uzunluklarına göre kullanılan alanı güncelleyin.
  • Veri ve günlük dosyaları için kullanılan ve boş alan yüzdelerini hesaplayın.

Adım 5: Sonuçları Gösterme

Son olarak, hesaplanan bilgileri kullanıcıya sunarız:

SELECT DatabaseName AS 'Veritabanı',
  type AS 'Tür',
  T AS 'Toplam',
  U AS 'Kullanılan',
  [U(%)] AS 'Kullanılan (%)',
  F AS 'Boş',
  [F(%)] AS 'Boş (%)',
  PhysicalName
FROM dbo.##Tbl_CombinedInfo 
WHERE DatabaseName LIKE ISNULL(@TargetDatabase, '%') 
ORDER BY DatabaseName ASC, type ASC;

Çalıştırma Örneği

Bu saklı yordamı çalıştırmak için, onu aşağıdaki gibi çağırabilirsiniz:

EXEC dbo.sp_SDS;

Belirli bir veritabanını hedeflemek veya çıktı birimleri için ayarlamalar yapmak isterseniz:

EXEC dbo.sp_SDS 'veritabani_adiniz', 'Veritabanı', 1, 'GB';

Sonuç

SQL Server veritabanlarınızın boyutunu bilmek, yalnızca etkili kapasite planlamasında yardımcı olmakla kalmaz, aynı zamanda genel veritabanı yönetim stratejinizi de geliştirmeye yardımcı olur. Verilen saklı yordamı uygulayarak, SQL Server veritabanlarınız hakkında içgörüler toplamakta verimli bir şekilde ilerleyebilirsiniz ve bu da optimal performans ve kaynak tahsisi sağlar.

Kendi deneyimlerinizi veya script üzerinde yaptığınız değişiklikleri paylaşmaktan çekinmeyin!