SQL Server'da çalışma yaparken genellikle üretime yönelik veritabanları ile daha çok ilgili olduğumuz için sistem veritabanlarını merak etmeyiz -zaten gizlidirler-SQL Server'da çeşitli amaçta 4 adet sistem veritabanı bulunmaktadır.Bunlar;Master,Model,Msdb ve Tempdb veritabanlarıdır.Bu yazıda kısaca MSDB veritabanı ile ilgili bazı özelliklere değinmek istiyorum.MSDB veritabanı sistem ile ilgili jobları ve veritabanı yedeklerinin ne zaman yapıldığı ile ilgili bilgileri tutmaktadır.Sistem performansı için DBA görevlerimize MSDB ve sistem veritanalarımızın bakımını almamız performans açısından önemlidir.Örneğin aşağıdaki resimdeki gibi herhangi bir zamanlanmış göreve bağlı olmadan elle yedekleme yaptığımızı varsayalım;
SELECT * FROM msdb.dbo.backupset
WHERE [database_name]='db adı'
order by backup_start_date
Yedekleme görevimiz ile ilgili başlangıç ve bitiş tarihleri ile ilgili MSDB veritabanı kayıtlarımızı aşağıdaki gibidir.
yedekleme işlemi bittikten sonra msdb.dbo.backupset tablosuna aşağıdaki komut ile sorgu çektiğimizde bize tüm yedekleme görevlerinin ne zaman başladığı ve ne zaman tamamlandığı hakkında bilgi verecektir.
SELECT * FROM msdb.dbo.backupset
WHERE [database_name]='db adı'
order by backup_start_date
Yedekleme görevimiz ile ilgili başlangıç ve bitiş tarihleri ile ilgili MSDB veritabanı kayıtlarımızı aşağıdaki gibidir.
Yukarıdaki 3 adet kayıt test ortamındaki bir sunucudan alındığı için az kayıt gözükmektedir.Örneğin benim üretim ortamında kullandığım veritabanlarında veri kaybına tahammülümüz olmadığı için sıkı bir yedekleme görevlerimiz mevcut olup an itibari ile 1448183 adet kayıt bulunmaktadır.Bunun için eskiye ait kayıtların temizlenmesi gerekmektedir.Bunu ise aşağıdaki stored procedure kodunu çağırarak yapabiliriz;
exec msdb.dbo.sp_delete_backuphistory '2015-10-16'
Yukarıdaki komut 16.10.2015 tarihinden önceki tüm kayıtları silecektir.msdb.dbo.backupset set tablomuzda 14 ekim ve 15 ekim 2015 tarihlerine ait kayıtlar bulunduğu için ilgili stored procedur bu kayıtların hepsini silmiş olacaktır.