SQL Server System Databases

Furkan Güngör
2 min readMar 27, 2019

--

Sql server kendini yönetirken database’ler üzerinden yönetir.

Ve biz bu database’lere sistem database’leri (sistem veri tabanları) deriz.

Resim 1.1

Resim 1.1 ‘ de görüldüğü gibi bunlar 4 tanedir.

  • master
  • model
  • msdb
  • tempdb

Bu sistem database’lerin içerisinde en önemlisi master db’dir.

master database, Sistem üzerinde kullanıcıların açmış olduğu database’lerin listesini, yine kullanıcı tarafından veya sistem tarafından belirlenen login bilgileri gibi bir çok veriyi saklar ve yönetir.

Master db Sql server için bir bel kemiği diyebiliriz.

Örnek verecek olursak; hangi veri tabanlarının hangi kullanıcılar ile ilişkili olduğunu bu db üzerinden görüntüleyebilirsiniz.

Resim 1.2

Resim 1.2 ‘ de görüldüğü gibi select * from sys.master_files yazarak sistem üzerinde bulunan tüm database’lerin listesini görebiliriz.

Master database olmadan SQL Server başlatılamaz.

model database , yeni açılan tüm veri tabanlarına modellik eder. Yani SQL server üzerinden açmış olduğumuz tüm veri tabanları model veri tabanının birebir kopyasıdır.

Örnek verecek olursak , gelen kelimenin tamamını büyük harfe çeviren bir fonksiyonunuzun olduğunu düşenelim ve bunu tüm veri tabanlarınızda uygulamak istiyorsunuz. Her veri tabanında aynı fonksiyonu yazmak yerine bunu model veri tabanında bir kere yazmanız yeterli olacaktır.

msdb , Sql Server Agent’lar için hizmet eder.

Sql Server Agent ise içerisinde job’larımızı tanımlayabileceğimiz bir yapıdır.

Job : Bizim belirttiğimiz zaman aralıklarında çalışan ve kendisine atanmış görevleri yerine getiren bir mekanizmadır.

Örneğin, her gece saat 2 ‘ de veri tabanımızın backup’ının alınması ve işlem sorunsuz bir şekilde tamamlandıysa veri tabanı yöneticisine mail atılmasını istiyoruz. O zaman her gece belirtilen saat’de çalışacak bir Job tanımlayabiliriz.

Eğer kullanıcı yeni bir Job açarsa veya var olan bir Job’ın işleyişini değiştirirse bunların kayıtları burada saklanır.

tempdb ise geçici bir veri tabanıdır. Peki neden tempDB’ye ihtiyaç duyarız.

TempDB üzerinden geçici olarak sistem veya kullanıcı objelerini saklayabilir.

Bu objeler , tablo, stored procedur vs. olabilir.

Bazen böyle geçici tablolara sorgularımızda ihtiyaç duyarız.

Örneğin yoğun bir raporlama sorgumuzun olduğunu düşünelim ve bu sorgu esnasında geçici bir tabloda bu verileri toplayıp okuma yapabiliriz. İşlem bittikten sonra ise silersek herhangi bir depolama biriminde saklanmayan ama istediğimiz zaman verilerimizi saklayıp okuyabileceğimiz bir yapı kurmuş oluruz.

TempDB üzerinde bir tablo açmak istersek ;

create table #tabloadi

diyebiliriz. Yani TempDB üzerinde işlem yapacaksak başına ‘#’ karakterini yerleştirmeliyiz.

Temp tablolarımız yani geçici tablolarımız kullanıcı bazlı değil oturum bazlı çalışır. Aynı kullanıcı iki farklı oturumda aynı tablo üzerinde işlem yapamaz.

Eğer bu oluşturacağımız temp table’ı her oturumda görmek istiyorsak başına ## ekleyebilirsiniz.

Teşekkürler.

--

--

Furkan Güngör

Solution Developer — I want to change the world, give me the source code.