Sql Server instance yüklendiği zaman default olarak belli
database'ler instance ile birlikte kurulurlar. Bunların görevlerinin neler
olduğu ne işe yaradığını bilmek önemlidir. Aşağıda size bunları anlatmaya
çalıştım. Bu default olarak yüklenen database’ler şunlardır:
- Master
- Tempdb
- Model
- msdb
- resource
- distribution
Master Database
Master database aslında isminde de anlaşılabileceği gibi
primary (birincil) veritabanımızdır. Bu veritabanı olmadan SQL Server
başlatılamaz. Master database önemli database objeleri hakkında bilgileri
saklar. Bunlara örnek olarak ise:
Instance içinde olan veritabanları
- AlwaysOn
- Database Mirroring
- Configration
- Login'ler
- Kaynak Yönetimi
- Endpoint
Örneğin aşağıdaki kodu çalıştırırsanız instance'ınızın
içinde bulunan tüm database'lerin listesini görerbilirsiniz.
SELECT * FROM sys.master_files
Yukarıdaki query bize veritabanlarının listesini ve ek
olarak da her bir database'in konfigrasyon seçenekleri ile ilgili bilgilerde
yer almaktadır.
Tempdb Database
TempDb kullanıcılar yada uygulamalar tarafından SQL Server
üzerinde oluşturulurlar. TempDb içerisinde geçici objeler saklanır. Bu
bahsettiğimiz geçici objeler; geçici tablolar stored procedur'ler, tablo
değişkenleri, global temp tablolar bulunur. Bunlara ek olarak da TempDb'de
online index işlemleri, Trigger tetiklendikten sonraki durum saklanır. SQL
Server her yeniden başlatıldığında TempDb yeniden oluşturulur. Ayrıca TempDb
içerisinde kullanıcılar da objeler oluşturabilir. Fakat verileri düzenli olarak
tempdb' de saklamak güvenilir bir yöntem değildir. Aslında adından da belli
olacağı üzere geçici database olduğu için SQL'in yeniden başlatılması, oturumun
kapanması gibi durumlarda buralarda saklanan veriler sıfırlanacaktır. Ayrıca
tempdb üzerinde backup ya da restore seçenekleri kullanılamaz. Kafalarda biraz
daha netleşmesi açısından benim tempdb'yi en çok kullandığım alanlara
değinelim; kritik bir veritabanı üzerinde çalışıldığı için tablolara doğrudan
yazma, güncelleme yetkimiz yok. Fakat scriptler üzerinde çalışırken local bir
temp tabloya yazıp üzerinde her türlü
insert,update, delete işlemini uygulayarak geliştirmelerimizi test edip
emin olduktan sonra gerekli değişiklikler canlı ortama taşınır.
İki tip şekilde temp db tanımlanabilir:
Create table #table...
scriptini çalıştırırsanız local bir tablo oluşturmuş
olursunuz ki bu durumda sadece çalışma yapmış olduğunuz session ve tek bir
kullanıcı üzerinden bu tabloya ulaşılabilinir.
Create table
##table...
scripti çalıştırdığı durumda global bir temp table
oluşturulmuş olur ve bu table farklı session ve kullanıcılar tarafında
erişilebilir olur.
Model Database:
Aynı instance içerisinde oluşturulan bütün veritabanları
modellerinin saklandığı yerdir. Aynı zamanda model database bir şablon olarak
da kullanılabilir. Örneğin bir instance'ında dâhil olmak üzere belli standart
bir tablo için her bir database içerisinde ayrı ayrı oluşturmak yerine tek bir
seferde hepsinde model database sayesinde tanımlanabilir. Eğer model database mevcut değil ya da
offline ise tempdb bu durumda oluşturulamaz. Daha öncede bahsettiğimiz gibi
Tempdb, SQL Server her başlatıldığında yeniden oluşturulur ki eğer model db'ye
ulaşılamıyorsa TempDb'nin de bu durumda yaratılması mümkün olmaz.
Msdb Database:
Msdb database SQL Server Agent'lar için temel olarak
back-end veritabanı olarak hizmet eder. Kullanıcı yeni bir Sql Agent Job
tanımlarsa ya da bunu schedule(zamanlama) ederse bunların metadata'ları bu
database üzerinde saklanırlar. Aynı zamanda aşağıdaki component'leri
barındırır.
- Service Brokers
- Alerts
- Log Shipping
- SSIS Packages
- Utility Control Point (UCP)
- Database Mail
- Maintance Plans
Resource Database
Resource database root'lar içersinde gizlenmiştir ve read
only(sadece okunabilir) olarak çalışır. Bu database'in en temel amacı bir
sonraki SQL Server versiyonuna geçebilmek için upgarde işlemlerini sağlamaktır.
Bir SQL Server instance içerisinde bulunan bütün sistem objeleri bu database de
bulunur.Resource database içerisinde iki tip dosya vardır:
mssqlsystemresource.mdf ve mssqlsystemresource.ldf'tir.Bir diğer önemli bilgi
bu veritabanının ID'si 32767'tir ve bu değer SQL Server 2005'ten SQL Server
2014' e kadar aynı kalmıştır. Resource Database Master Database ile aynı
lokasyonda bulunmalıdır. Donanımsal bir sıkıntı yaşanması durumunda master
database'i yeni bir alana restore etmeniz gerekmektedir. Bunu yapmdan önce WITH
MOVE seçeneği ile birlikte yapmamız gerekmektedir ki RESOURCE DATABASE'in .mdf
ve .ldf dosyalarıda master database ile birlikte taşınabilsin. Bu database ile
ilgili enteresan bir bilgi daha, istisnai durumlar dışında diğer veritabanları
gibi Resouce database'in Backup'ını alamaz yada tekrardan restore edemezsiniz.
Distribution Database
Evet, son olarak ele alacağımız sistem veritabanı
distribution database. Bu sistem database'i eğer siz instance içiersinde
distribution özelliğine sahip bir replication işlemi configre ettiğiniz zaman
SQL Server Managament Studio'da system database branch'nin altında bu
veritabanını görürsünüz. Replication işlemi için öncelikle verilerin
gönderimini sağlayacak olan bir distributor database tanımlamanız
gerekmektedir. Bunu da Replication configure ederken buradaki ilgili ekranlardan
distribution database oluşturabilirsiniz. Bu veritabanında replication işlemi
ile ilgili bütün metadata ve tarihsel dökümler bulunmaktadır.