SQL Server’da Sistem Veri Tabanlarını Nasıl Restore Ederiz?

Merhaba, bu yazıda Master, MSDB ve Model veri tabanlarının olası bir çökmeye karşı nasıl restore edilebileceğinin bir yolundan bahsedeceğim. SQL Server’da sistem veri tabanları; master, model, msdb ve tempdb dir. Sistem veri tabanları bir sql serverın doğru çalışabilmesi için çok önemlidir. Bu yazının konusu olan master ve msdb veri tabanları ne iş yaparlar öncelikle onlara bir bakalım.

Master veri tabanı, tüm sistem bilgilerini kayıt etmektedir. Bu sistem bilgileri, logon hesaplarını, linked-server ları, endpointleri ve sistem konfigürasyon ayarlarını içermektedir. Ayrıca master veri tabanı tüm diğer veri tabanlarının varlığını ve bunların dosyalarının konum bilgilerini de içerir. Bir SQL Server master veri tabanı olmadan çalıştırılamaz. Bu yüzden oldukça oldukça önemlidir.

Msdb veri tabanı, ise SQL Server Agent’da joblar ve scheduling (zamanlama), SQL Server Management Studio gibi bazı özellikler için, Service Broker ve Database Mail için kullanılmaktadır.

Model veri tabanı, oluşturulacak yeni veri tabanları için şablon olarak görev yapar. Sql Server’da oluşturulan her yeni veri tabanı, model veri tabanındaki standart default değerleri kullanır. Tempdb veri tabanı model veri tabanını şablon alarak oluştuğundan model veri tabanı sistemde kesinlikle olmalıdır.

Bu veri tabanları herhangi bir sebepten dolayı kilitlenebilir veya açılamayabilir. Böyle durumlarda neler yapmamız gerektiğini aşağıda anlatacağım. Bu tarz durumlardan kaçınmak ve veri kaybetmemek sebebiyle düzenli sistem backuplarını almayı ihmal etmemelisiniz.

Master Veri Tabanının Restore Edilmesi

Çeşitli sebeplerden dolayı ulaşılamaz durumda olan master veri tabanını restore etmeden önce eğer msdb ve model veri tabanlarınız yedekli değilse onları mutlaka yedeklemelisiniz. Master veri tabanını restore edebilmek için öncelikle veri tabanını single user mode a çekmeliyiz. Single user moda çekmeden master veri tabanını restore edemeyiz. Ya da oldu da bir çökme durumu ile karşı karşıya kaldıysanız zaten master veri tabanı erişilemez olacaktır. Öncelikle veri tabanını single user’a alalım ve daha sonra restore edelim. Resim-1 de single usera almadan restore etmeye çalıştım hata verdi, hata mesajında ise single user a almamız gerektiği yazıyor.

Senaryo 1

  • Başlattan SQL Server Configuration Manager ‘ı başlatalım.
  • Sol tarafta yer alan SQL Server Services > SQL Server (Instance name)’e sağ tıklayalım.
  • Buradan Properties > Startup Parameters kısmında Specify a startup parameter kısmına -m yazarak sağ taraftaki Add butonuna basalım. Apply ve OK dedikten sonra burada bize yapılan bu değişikliklerin servisi durdurup restart edene kadar gerçekleşmeyeceği uyarısını verecek. Burada yaptığımız işlem veri tabanını single user moduna çekmektir. Single user modunda tek bir kullanıcı bağlanabileceği için mutlaka agent servisini de bu işlemi yaparken durdurmalıyız.
  • SQL Server (Instance name)’ e tekrar gelelim ve sağ tıklayıp restart edelim.
  • Başlata cmd yazalım ve sağ tıklayıp yönetici olarak çalıştır diyelim. Sqlcmd -S yazıp eğer sql kurulum instance’ı default ayardaysa o şekilde bırakalım değilse eğer Instancename\Username şeklinde aşağıdaki gibi ilk satırı yazalım.
  • Daha sonra Restore scriptini, kendi dosya yolumuzu scripte ekleyerek çalıştıralım.
sqlcmd -S  WIN-.......\SQL2019
RESTORE DATABASE master FROM DISK = 'C:\Storage\Backup\master.bak' WITH REPLACE
GO
  • Database restore oldu. SQL Server Configuration Manager’da eklediğimiz -m yi remove edelim. Servisi restart edelim.

Senaryo 2

Senaryo 2 de ise elimizde veri tabanının backupı olmadığını varsayalım. Böyle bir durumda rebuild işlemi yapılabilir. Rebuild işlemi sonrası veri tabanı açılır. Ama yeni kurulmuş gibi default ayarlarda gelir. bu yüzden rebuild yapılmadan tüm databaselerin create scripti ve backupları mutlaka alınmalıdır.

  • Rebuild işlemi için SQL’in setup dosya yolu gereklidir. Örneğin bende C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\SQL2019 yolunda bulunuyor.
  • Cmd yönetici olarak yeniden başlatılır. Bu dosya yolu burada açılır:
  • cd C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\SQL2019

Daha sonra

 .\setup /ACTION=REBUILDDATABASE /INSTANCENAME=<instance_name> /SQLSYSADMINACCOUNTS=<admin_account> /SAPWD=<sa_password>
.\setup /ACTION=REBUILDDATABASE /INSTANCENAME=SQL2019 /SQLSYSADMINACCOUNTS=WIN-N98Q2ENR5QG\Administrator /SAPWD=2d5rnJV7

Buradaki veriler yerine kendi verileriniz girilir ve biraz bekledikten sonra rebuild işlemi gerçekleşir. Veri tabanı açıldıktan sonra tüm backuplar restore edilir.

MSDB & Model Veri tabanlarının Restore Edilmesi

Tüm bu işlemler sonrası MSDB & Model veri tabanını bildiğimiz süreçle restore edebilirsiniz. Restore ederken database in use hatası alırsanız Options’dan Close existing connections demeyi unutmayın 🙂

Bu yazıdan da anlaşılacağı gibi master veri tabanının çökmesi durumunda bazı veriler kaybolabilir. Bu yüzden mutlaka bir backup prosedürü oluşturulmalıdır. Düzenli bir şekilde yedeklenme yapılmalıdır 🙂

SQL Server’da yeni bir veri tabanı oluşturulduğunda model veri tabanının kopyasını aldığı için varsayılan ayarları değiştirilmiş bir Model veri tabanınız mevcutsa yedeğini almak faydalı olacaktır.

Bir önceki yazıma göz atmayı unutmayın:

Leave a Reply

Your email address will not be published. Required fields are marked *