Sistem Veri Tabanları (Master, Msdb, Tempdb, Model, Resourcedb)

Sistem veri tabanları SQL Server ile otomatik olarak yüklenen veri tabanlarıdır. Management studio içinde bakıldığında kullanıcı tanımlı (user-defined) veri tabanları gibi silinme ya da yeniden adlandırma gibi seçenekleri yoktur.

Kullanıcı tarafından oluşturulan veri tabanları aksine SQL Server tarafından oluşturulup bakımı yapılan sistem veri tabanları olmadan SQL Server düzgün çalışmaz. Hatta hiç çalışmaz.

Bunlar; Master, Msdb, Tempdb, Model, Resourcedb olarak adlandırılırlar. Resourcedb gizli bir veri tabanı olduğundan sistem veri tabanları listesinde fiziksel olarak gözükmemektedir.

1-Masterdb (Ana veri tabanı)

SQL Server in en önemli sistem veri tabanıdır. Başlatma bilgilerini kaydeden veri tabanı olduğu için masterdb olmadan SQL Server çalışmaz. Bu yüzden silinmemelidir.

Kullanıcı hesap bilgileri, bağlantılı sunucular (linked servers), sistem yapılandırma ayarları, veri tabanları ve bunların dosya konumları gibi bilgileri içinde barındırır.

Ana veri tabanının düzgün bir yedeği olmazsa herhangi bir bozulma durumunda tekrar baştan oluşturmak gerekir.

2-Msdb

SQL Server Agent sisteminin bulunduğu veri tabanıdır. Oluşturulan Joblar ve bunlar üzerinde yapılan değişiklikler, schedulelar, uyarılar(alert) burada bulunur.

Msdb veri tabanı olmadan SQL Server çalışır ama SQL Serverda bulunan joblar çalışmaz. Jobların yönetilebilmesi için bu veri tabanına ihtiyaç duyulmaktadır.

Select*from msdb.dbo.sysjobs --sistem üzerinde kayıtlı jobları görebilmek için msdb veri tabanından yararlanılır.

Select*from msdb.dbo.sysjobhistory  --sistem üzerinde kayıtlı jobların hareketlerini, durumlarını görebilmek için msdb veri tabanından yararlanılır.

3-Tempdb (Geçici Veri tabanı)

Sistemde geçiçi olarak oluşturulan tabloları tutan veri tabanıdır. Aynı zamanda Aggregate fonksiyonlarda bu veri tabanı içinde çalışır.

Tempdb için bir backup seçeneği yoktur. Çünkü Sql Server her açıldığında yeniden oluşur.

Temp tablolar #Tablo adı şeklinde oluşturulur. Ama session bazlıdır. Yani çalışılan sayfa kapandığında gider. Başka sayfada çalışmaz.

##tabloadı olarak oluşturulursa  global olur ve tüm sessionlarda çalışır. Ama diskte yer kaplamadığı için SQL Server yeniden başlatıldığında gider.

Diğer veri tabanı dosyalarına kıyasla Tempdb daha fazla dosyaya sahiptir. Çünkü group by, aggregate fonksiyonları bu veri tabanı içinde yer alır ve performansı yüksek tutmak için daha fazla dosyaya bölünmüş durumdalardır.

Tempdb olmadan da sql server çalışır. Örneğin tempdb dosyasını sildik diyelim. SQL Server’ı başlattığımızda server tekrar yeni tempdb dosyaları oluşturacaktır. Çünkü bunlar server kapandığında giden geçici dosyalar olduğu için silinmeleri herhangi sorun yaratmayacaktır..

4-Model (Model Veri tabanı)

Model veri tabanıdır. Yani oluşturulacak herhangi bir veri tabanı için bir nevi taslak işlevi görür.

Örneğin yeni oluşturulacak bir veri tabanında görmek istediğiniz standart veri tipi, fonksiyon, tablo gibi şeyler burada oluşturulabilir. Bu sayede her yeni veri tabanı için aynı şeyleri tekrar tekrar oluşturmak yerine bir kere modeldb içinde oluşturarak otomatik kopyalanması sağlanabilir.

ModelDB dosyaları olmadan SQL Server yeniden başlatılamaz çünkü tempdb dosyalarını oluşturmak için bir şablon arar ve bulamayınca bunları oluşturamaz. Bu da Sql Serverin hata almasına sebep olur.

5- Resource Database (Kaynak Veri tabanı)

Kaynak veri tabanı SQL Server 2005 sürümü ile sistem veri tabanlarına katılmıştır. Asıl amacı SQL Server’ın versiyon güncellemelerini hızlandırmak ve kolaylaştırmaktır. Kaynak veri tabanı yokken SQL server güncelleme sırasında tüm sistem nesnelerini kaldırıp yeniden oluşturuyordu bu da zaman alan ve riskli bir yöntemdi. Kaynak veri tabanı ile tüm nesneler bir arada olduğu için yeni versiyon üzerine artık direkt bu veri tabanı kopyalanıyor.

Sistem veri tabanı listesine bakıldığında görülemeyen, tüm sistem nesnelerini içinde barındıran, salt okunur gizli bir veri tabanıdır.

Kaynak veri tabanı, kullanıcıya ait bilgileri içinde barındırmaz.

Normal şekilde yedeklenmez. Sadece fiziksel dosyasını başka bir yere kopyala yapıştır yaparak yedeği alınabilir.

Aşağıdaki sorgu ile veri tabanı dosyalarının adı boyutu ve boş alan miktarı öğrenilebilir.

SELECT name, size/128.0 FileSizeInMB,

size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0

   AS EmptySpaceInMB

FROM sys.database_files;

Aşağıdaki sorguyu kullanarak master veri tabanı içerisindeki nesneler görülebilir.

select * from sys.master_files

Daha fazla bilgi için, yararlandığım kaynaklar

sistem veritabanları

resource db.

ms resourcedb

Btk akademi OmerColakoglu

ms systemdb

buketbodur tarafından yayımlandı

İş zekası ve Veri Ambarı Danışmanı

Yorum bırakın