SQL Server Sistem Veritabanlarının Restore Edilmesi

Kullanıcılar tarafından oluşturulan veritabanlarının restore edilmesi işlemi sık sık yapılmasına karşın server veya instance bazındaki bir kurtarma seneryosunda sadece kullanıcı tanımlı veritabanlarının restore edilmesi yetmez. Kullanıcı veritabanlarıyla ebraber hatta kullanıcı veritabanlarından önce sistem veritabanlarının restore edilmesiyle işleme başlanmalıdır.

Daha öncede bahsettiğimiz gibi sistem veritabanları master,msdb,temp,model,resource ve eğer replication kullanılıyorsa distrubiton veritabalarıdır. Şimdi kısaca bu veritabanlarının nasıl restore edileceğine değinelim.

Master Veritabanının Restore Edilmesi

Master sistem veritabanı SQL Server hayati öneme sahip bilgileri tutan veritabanıdır. SQL server loginleri de dahil olmak üzere SQL Serverın çalışması için gerekli olan birçok bilgi bu veritabanında tutulmaktadır. Bu yüzden olası bir felaket durumunda Server veya instance yeniden yapğılandırılması gerekiyorsa başlangıç noktamız master sistem veritabanı olmalıdır.

Master sistem veritabanının restore işlemi kullanıcı tanımlı veritabanlarının restore işlemlerinden biraz farklıdır. Adım adım Master veritabanının restore nasıl restore edileceğini görelim.

İlk adım olarak elimizde master veritabanın alınmış full backup dosyası olması gerekir. Bu sebeple düzenli olarak kullanıcı tanımlı veritabaları gibi sistem veritabanlarının da backupları alınmalıdır. Master veritabanını restore etmek için öncelikle SQL Server servisi Single User modunda başlatılmalıdır. Bunun için öncelikle SQL Server servisi durdurulmalı daha sonra Single user modda başlatmak için –m parametresi ile servis tekrar başlatılmalıdır. Bu şekilde SQL Server servisini iki şekilde başlatabiliriz. Birinci yöntem servisler veya SQL server configuration manager aracılığıyla SQL Server servisini durdurmalıyız. Daha sonra komut satırı açılarak(Command promt cmd) SQL server kurulumunu yaptığımız klasöre geçiş yapılır. Örneğin: 

 

Sonraki adım olarak ilgili klasörde bulunan sqlservr.exe –m parametresi ile çalıştırılmalıdır.

 

Eğer SQL Server default instance olarak kurulmamışsa –m parametresiyle birlikte –s parametresiye instance adı da belirtilmelidir Örneğin SQL Server Express için komut şu şekilde kullanılmalıdır.  sqlservr.exe -m –s SQLEXPRESS

SQL Server servisimizi Single User modda çalıştırdıktan sonra SqlCmd aracı kullanılarak Restore işlemi yapılmalıdır. Bunun için yine komut satırı(cmd) kullanırark Sqlcmd exe çalıştırılabilir. Sql cmd çalıştırıldıktan sonra restore işlemi aşağıdaki gibi yapılabilir.

 

Farklı bir yöntem olarak SQL Server servisini single user modda başlatmak için SQL Server configuration manager aracı veya makinenin Administrative Tools kısmında bulunan servisler bölümü kullanılabilir. Bunun için önce SQL Server servisi durdurulmalı ve aşağıdaki gibi servis başlatılmadan parametreler belirtilmelidir.

 

Yukarıdaki şekilde gördüğümüz gibi SQL Server servisini Single User modda başlattıktan sonra daha önceki adımda değindiğimiz sqlcmd aracı ile master veritabanını restore edebiliriz. Elimizde bulunan master veritabanının full backupını başka bir servera restore etmek istersek backupın aldığı server ile restore edilecek olan server aynı konfigürasyona sahip olmalıdır. Örneğin işletim sistemleri ve sürümleri aynı olmalı, SQL Server sürümleri aynı olmalı hatta SQL Servera yüklediğimiz service packler bile aynı olmalıdır. Aksi takdirde master veritabanını restore edemeyiz.

Msdb Veritabanının Restore Edilmesi

Msdb sistem veritabanı genelde SQL Server agent ile yapılan işlemere ait bilgileri tutar. Örneğin sistemde oluşturduğumuz joblar ve bu joblara ait bilgiler msdb sistem veritabanında tutulmaktadır. Ayrıca Integration service paketleri ve yine integration servis paketlerinin özelleştirilmiş hali olan maintenance planlar da msdb veritabanında tutulmaktadır. Bu yüzden msdb veritabanı için SQL ServerAgent uygulaması tarafından kullanılan sistemö veritabanıdır demek yanlış olmaz.

Msdb veritabanı Simple Recovery modelde olduğu için restore edilmesi master sistem veritabanına oranla daha kolaydır. Öncelikle SQL Server Agent servisi durdurulmalı ve daha sonra msdb veritabanının alınan son backupı aşağıdaki gibi restore edilmelidir.

RESTORE DATABASE MSDB
FROM FILE=C:\msdb.bak
WITH RECOVERY

Tempdb Veritabanının Restore Edilmesi

Tempdb veritabanı SQL server için kullanılan geçici objelerin tutulduğu veritabanıdır. Aslında pratikte tempdb sistem veritabanının restore edilmesi ihtiyaç olan bir durum değildir. Fakat bazı durumlarda tempdb sistem veritabanının data veya log dosyalarını başka disklere taşıma ihtiyacımız olabilir. Bunu karşılaşmak için master veritabanında aşağıdaki sql scripti kullaılmalıdır.

USE master
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'E:\SQLData\templog.ldf');

Bu komutu çalıştırdıktan sonra Tempdb sistem veritabannın istenen diskte yeniden oluşturulması için SQL Server servisi restart edilmelidir.

Resource Veritabanının Restore Edilmesi

Resource veritabanı SQL Server 2005 ile beraber gelen ve sistem objelerini tutan gizli bir sistem veritabanıdır. Özellikle SQL Server 2000 kullananlar daha sonra SQL Serverın üst sürümüne geçtiklerinde master veritabanının boyutunun ciddi bir şekilde azaldığını fark ederler. Bunun sebei SQL Server 2000de master veritabanında bulunan tüm sistemö objeleri SQL Server 2005 ve sonraki sürümlerde gizli bir veritabanı olan ve Management stdioda listelenmeyen Resource adındaki sistem veritabanında tutulmaktadır. Peki Resource veritabanı nerede?

SQL Server 2005  sürümünde : C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data

SQL Server 2008 ve Sonrasında : C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn

Klasörlerinin içinde bulunan mssqlsystemresource.mdf ve mssqlsystemresource.ldf adlı iki dosyadır.

Resource veritabanı pek bilinmemesine rağmen en az master veritabanı kadar önemli bir sistem veritabanıdır. Çünkü SQL Server servisi Resource veritabanı olmadan başlamayacaktır.

Resource veritabanının yedeği diğer kullanıcı tanımlı veya sistem veritabanlarından farklı olarak Tsql scripti ile alınmaz. Resource veritabanın backupını almak için yukarıda yolunu belirttiğimiz klasördeki iki dosyada kopyalanıp başka bir yerde saklanmalıdır. Resource veritabanı çok sık güncellenen bir veritabanı olmamakla beraber sistemin kurulmasından sonra SQL Server servis pack veya hotfixlerinn kurulmasıyla değişmektedir. Bu yüzden özellikle bu tür kurulumlardan önce Resource veritabanı yedeklenmelidir. Resource veritabanına ait data ve log dosyaları SQL Server çalışıyorken bile kopyalanıp başka bir yere yedeklenebilir.

Yazıyı beğendiyeseniz sosyal medyada paylaşabilirsiniz.

Yazar Hakkında

Avatar
İsmail Adar

cialis generic kamagra gel cheap cialis uk levitra uk cialis generic kamagra gel kamagra 100mg cheap cialis uk cheap levitra uk cheap cialis kamagra 100mg cialis tadalafil kamagra oral jelly cialis buy viagra generic levitra uk kamagra gel cialis generic cheap levitra cheap viagra uk

Yorumlar

Yorum Yazın

.com

Bülten Üyeliği

Güncel eğitim ve etkinliklerden ilk haberdar olmak için ücretsiz abone olun.

Login

Login olmak için kullanıcı adınızı ve şifrenizi giriniz.

Şifremi Unuttum

×

Hızlı İletişim

Her konuda bana yazabilirsiniz. En kısa zamanda cevap vereceğim.

×