7 Şub by NURULLAH ÇAKIR

Master Veritabanını Restore Etmek

Master veritabanı sistem veritabanlarından biridir. Sistem seviyesinden tüm bilgileri tutar. Örneğin loginler, endpoint ler, linked server lar, sistem konfigürasyon ayarları.

 

Bu yüzden master veritabanı olmadan bir sql server instance’ı çalışmaz. Bu yüzden düzenli olarak master veritabanının ve diğer sistem veritabanlarının yedeklerini almalısınız. “Sistem Veritabanları” isimli makalemde sistem veritabanları hakkında detaylı bilgi alabilirsiniz.

 

Peki master veritabanı bozulduğunda restore işlemini nasıl yapacağız?

 

Master veritabanını restore etme ihtiyacı genelde master veritabanında oluşan bir corruption sonucu sql server servisinin açılmamasıyla başlar. SQL Server Configuration Manager’dan SQL Server servisini başlatmak istediğinizde aşağıdaki gibi bir hata görürsünüz. “SQL Server Configuration Manager Ayarları” isimli makalemde Configuration Manager üzerinden yapılabilecek ayarlara ulaşabilirsiniz.

 

 

Yukardaki hatada servisin yanıt vermediğini ve event log’a bakmamız gerektiğini söylüyor.

 

Windows home’da aşağıdaki gibi Event viewer’ı açıyoruz. Eğer bilgisayarınızın dili türkçe ise olay görüntüleyicisi olarak arattırmalısınız.

 

 

Event viewer ya da olay günlüklerinde aşağıdaki gibi windows günlüklerinin ya da windows logs’un altında Application ya da uygulama’ya tıkladıktan sonra sağ tarafta ilgili hatayı görebilirsiniz. Benim örneğimde master veritabanına ait log dosyası silinmiş ve bu yüzden sql server master veritabanının log dosyasını bulamadığı için açılamıyor.

FCB::Open failed: Could not open file C:\Program Files\Microsoft SQL Server\MSSQL12.TESTINSTANCE\MSSQL\DATA\mastlog.ldf for file number 2.  OS error: 2(Sistem belirtilen dosyayı bulamıyor.)

 

Master veritabanı olmadan sql server servisini başlatamazsınız. Bu yüzden sistem veritabanlarının hepsini rebuild etmelisiniz. Rebuild işlemini yapmadan önce model ve msdb veritabanlarının son backup’ının elinizde olduğundan emin olun. Çünkü sistem veritabanlarınızı rebuild ettiğinizde herşey sıfırlanacak. Daha sonra sadece master veritabanını değil model ve msdb veritabanlarını da restore etmemiz gerekecek. Sistem veritabanlarını rebuild etmek için “Sistem Veritabanlarını Rebuild Etmek” isimli makalemden faydalanabilirsiniz.

 

Rebuild işlemi bittikten sonra SQL Server Configuration Manager üzerinden ilgili instance’a sağ tıklayarak properties diyoruz ve aşağıdaki gibi -m parametresini Add diyerek ekliyoruz ve servisi stop ediyoruz.

 

Daha sonra cmd komut satırını aşağıdaki gibi admin olarak çalıştırıyoruz.

 

 

Ve sql server servisini aşağıdaki gibi start ediyoruz. TESTINSTANCE yazan yere kendi instance adınızı yazmalısınız.

 

NET START MSSQL$TESTINSTANCE

 

 

Servis’i başlattıktan sonra default instance için işlem yapacaksanız sadece sqlcmd yazıp enter’a basmalısınız. Eğer named instance’a bağlanacaksanız aşağıdaki gibi sqlcmd -S sunucuadı\instanceadı ya da sqlcmd -S .\instanceadı yazmalısınız.

 

Tabi yukardaki script’te sunucuadı yazan yere kendi sunucunuzun adını, instanceadı yazan yere de kendi instance’ınızın adını yazmalısınız.

 

Aşağıdaki ekran görüntüsünde bu işlem’i TESTINSTANCE isimli instance için yaptım. Bu önemli bir adım. Yanlış Instance’ a bağlanmamanız gerekir.

 

 

Daha sonra restore işlemine geçiyoruz. Aşağıdaki komutla restore işlemini yapıyoruz. C:\MSSQL path’i yerine backup’ınız hangi path’de ise o path’in bilgilerini yazmalısınız.

 

RESTORE DATABASE master FROM DISK = 'C:\MSSQL\master.bak' WITH REPLACE;

 

 

Restore işlemi bittiğinde SQL Server bağlantıyı otomatik olarak koparıp servisi durdurdu. Configuration Manager’a gidip daha önce eklediğimiz -m parametresini kaldırmamız gerekir.

 

Restore işlemi sonrasında instance’ a bağlandığınızda eski veritabanlarınızın ve login’lerinizin geldiğini göreceksiniz. Eğer master veritabanını restore etmeden önce rebuild ettiyseniz Job’larınızın gelmediğini göreceksiniz. Job’larınızın gelmesi için msdb veritabanını restore etmelisiniz.

 

Msdb ve model veritabanının restore işlemlerini normal veritabanı restore işlemi gibi yapabilirsiniz. Ekstra bir ayar yoktur. Sadece msdb veritabanını restore edebilmeniz için SQL Server Configuration Manager’dan SQL Server Agent Servisini durdurmalısınız.

 

Msdb ve model sistem veritabanlarının script’lerini aşağıda bulabilirsiniz.

 

 

Model için;

RESTORE DATABASE model FROM DISK = 'C:\MSSQL\model2subat.bak' WITH REPLACE;

Msdb için;

RESTORE DATABASE msdb FROM DISK = 'C:\MSSQL\msdb2subat.bak' WITH REPLACE;

 

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir