Salı , 19 Haziran 2018

Veritabanının Farklı Isimle Restore Edilmesi

SQL server sık karşılaştığım sorulardan bir tanesi sistemde var olan bir veritabanının farklı isimle kopyasını nasıl oluşturabileceğiydi. Aynı soruyla bir forumda da karşılaştıktan sonra bu konuyu yazmam gerektiği kanaatine vardım. Öncelikle elimizde var olan bir sql server backup dosyası restore edilirken aksi belirtilmediği sürece SQL Server backup alınırken kullanılan data ve log dosyaları ile aynı lokasyonda aynı isimle yine data ve log dosyası oluşturmaya çalışır. Eğer fiziksel olarak o lokasyona erişemiyorsa veya ilgili dosyalar başka bir uygulama tarafından kullanılıyorsa hata verecektir. Bu neden aynı makine üzerine farklı bir isimle bir backup dosyasını restore etmek istiyorsak SQL servera data ve log dosyalarını varsayılandan farklı olarak farklı konumda oluşturmasını söylememiz gerekir. Bunun içinde Restore komutuyla beraber MOVE seçeneğini kullanmamız gerekiyor. Şimdi bu seneryoyo Microsoft’un örnek veritabanı olan AdventureWorks2012 üzerinde gerçekleştirelim.

İlk adımda aşağıdaki gibi AdventureWorks2012 veritabanının backupını alıyorum.

BACKUP DATABASE [AdventureWorks2012] TO DISK=’C:\AdventureWorks2012_full.bak’ WITH INIT

Backup işlemimiz bittikten sonra sıra bu backup dosyasını farklı isimle restore etmeye geldi. Öncelikle Restore komutunu Move parametresiyle çalıştırmak için backup aldığım veritabanına ait Logical Name değerlerine ihtiyacım var. Onları elde etmek için Restore Filelistonly komutun aşağıdaki gibi çalıştırıyorum.

RESTORE FILELISTONLY FROM DISK=’C:\AdventureWorks2012_full.bak’

restore

Yukarıdaki resimde gördüğümüz gibi aksi belirtilmedikce restore işlemi Physical Name kolonundaki lokasyona yapılacaktır ki bu lokasyondaki dosyalarda zaten şuan SQL server tarafından kullanııyor. Bu nedenle farklı bir lokasyona data ve log dosyalarını taşımamız gerekiyor. Bunun için SQL Servera Restore işlemi sırasında bunu aşağıdaki gibi belirtmeliyiz.

RESTORE DATABASE AdventureWorks_Temp FROM DISK=’C:\AdventureWorks2012_full.bak’
WITH
MOVE ‘AdventureWorks2012_Data’ TO ‘c:\AdventureWorks_Temp\AdventureWorks2012_Data.mdf’,
MOVE ‘AdventureWorks2012_Log’ TO ‘c:\AdventureWorks_Temp\AdventureWorks2012_Log.ldf’

Yukardaki Restore komutunda gördüğümüz gibi MOVE ile kullandığımız ilk parametre veritabanının Restorefilelistonly komutuyla elde ettiğimiz Logical name değerleridir. Bu şekilde veritabanımı AdventureWorks_Temp olarak restore edebiliyorum.

restore2

 

Hakkında ismailadar

Cevapla

E-posta adresiniz yayınlanmayacak. Required fields are marked *

*


*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>