SQL SERVER SYSTEM DATABASES
SQL Server kendi kendi yönetirken de aslında bir takım veri tabanlarını kullanır işte bu veritabanları sistem veritabanları yada sistem databaseleri olarak adlandırılır.
Yukarıdaki resimde görüldüğü üzere Databases altında System Databases klasörü içerisinde bulunur.
MASTER DB
Sistem veritabanlarından en önemlisi olan Master Db;
• Sistem Könfigürasyonu,
• Kullanıcılar,
• Veritabanları,
• Sistem Dosyaları,
• Collation Bilgisi
gibi Sql Server sisteminin temel konfigürasyon bilgilerini tutar.Sql Server Hizmeti Çalışır durumda iken master.mdf ve mastlog.ldf dosyaları üzerinde değişiklik yapmanıza izin vermez ama hizmeti durdurur iseniz dosya üzerinde değişkik yapabilirsiniz eğer dosyayı silecek olursanız Sql Server çalışmayacaktır.
MODEL DB
• Şablon Veritabanıdır.
• Her bir oluşturulacak veritabanı ModelDB'nin bir kopyası olarak oluşturulur.
• Her veritabanında otomatik olarak olmasını istediğimiz tipler ,fonksiyonlar,tablolar var ise bu veritabanının içine konulabilir.
Şimdi bir örnek ile yazdıklarımı tasdikleyeyim . İlk olarak ModelDB içerisine bir tablo ekledim.
Sonrasında bylge adında bir veritabanı oluşturdum.
Ve sürpriz. Yeni oluşturduğumuz veritabanı içerisinde , ModelDB içerisinde oluşturduğumuz tablonun aynısı otomatik olarak eklenmiş durumda.
Aslında bakarsınız bu özelliği hayatınız boyunca hiç kullanmayabilirsiniz. Peki ne işe yarıyor bu? Örneğin; Hosting firmaları size bir veritabanı veriyor,bu firmalar sizin oluşturduğunuz veri tabanlarında otomatik olarak eklenmesini istediği fonksiyonlar,tablolar olabilir. Bunları herseferinde scriptler ile oluşturmak yerine modeldb içerisinde tanımlayabilir.
Master DB de olduğu gibi bu model.mdf ve model.ldf dosyaları üzerinde değişiklik yapmanıza izin vermez ama hizmeti durdurur iseniz dosya üzerinde değişkik yapabilirsiniz eğer dosyayı silecek olursanız Sql Server çalışmayacaktır.
MSDB
• SQL Server Agent servisinin kullandığı bir veritabanıdır.
• Periyodik olarak çalıştırılan her türlü işlem(job lar ,scheduler lar,alert ler) burada tutulur.
SQL Server Agent’ı kabaca açıklamak gerekirse sistem üzerinde belirlenmiş işleri belli periyotlar halinde çalıştıran bir servisdir. Bir örnek ile daha iyi anlaşılacaktır.
SQL SERVER AGENT
İlk olarak TEST adlı bir veritabanı ve DATES adlı bir tablo oluşturuyorum.
Şimdi ise bir job oluşturacağım .Otamatik kayıt at adında her 10 saniyede bir DATES tabloma günün tarihini yazdıracak bir job oluşturdum.(yazımızın asıl konusu sistem databaseleri olduğu için job oluşturmayı detaylı olarak anlatmadım google da kolayca bulabilirsiniz.)
Aşağıdaki resimde görüldüğü gibi tabloma her 10 saniyede 1 kayıtlar atılmış ve atılmaya devam ediyor.
SELECT * FROM SYSJOBS sorgusu ile MSDB içerisinde jobların tutulduğu tabloyu çekiyorum. Oluşturmuş olduğum otomatik kayıt at jobını görebilirsiniz.
İşte MSDB , SQL Server’a bağlı bir hizmet olan SQL Server Agent hizmetinin bilgilerini tutar. Eğer bu veritabanın dosyalarını silecek olursanız SQL Server çalışacak fakat SQL Server Agent hizmeti çalışmayacaktır.
TEMP DB
- Geçici tabloların oluşturulduğu işlemler burada gerçekleştirlir.
- Kullanıcı veritabanlarından çeklilen dataları group by,order by,sum,min,max, count ,order by gibi komutlar ile özetlemek amacı ile kullandığımız aggregation işlemleri için TEMP DB kullanılır.