SQL Server 2008’ de Bulunan Bir Database’ i SQL Server 2005’ e Taşımak (Restore)
Aslında problem sadece 2008’den 2005’e taşımak ile sınırlı değil. Bildiğiniz gibi major üst versiyonlarda oluşturulmuş bir database’i daha alt bir versiyona backup-restore ya da detach-attach ile taşıyamıyoruz.
Bugünkü yazımda bu konuya bir çözüm bulup adım adım bu taşıma işleminin nasıl yapılacağına bakıyor olacağız.
Giriş paragrafında da belirttiğim gibi konu sadece 2008’den 2005’e taşımak ile ilgili değil. 2008R2’dan 2008’e ya da 2008’den 2000’e yapılan backup-restore ya da detach-attach işlemlerinde de hata alınmaktadır.
Örneğin alınan hatalar şu şekilde;
2008’den 2005’e backup restore;
Msg 3241, Level 16, State 7, Line 2
The media family on device ‘D:dbDeneme2008_2.bak’ is incorrectly formed. SQL Server cannot process this media family.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.
2008’den 2005’e detach attach;
The database ‘XXX’ cannot be opened because it is version 655. This server supports version 612 and earlier. A downgrade path is not supported.
Could not open new database ‘XXX’. CREATE DATABASE is aborted. (Microsoft SQL Server, Error: 948)
Şimdi çözüme geçelim;
Generate Script ile 2008’den 2005’e Database Taşıma
Ben örneğimi 2008’den 2005’e taşıma olarak yapacağım. Siz aynı mantıkta diğer versiyonlar arası da taşıma yapabilirsiniz.
Önce her zamanki gibi bir çalışma DB’si create edelim. Bu DB’yi 2008 sunucumda create ediyorum.
create database dbDeneme2008
GO
Use dbDeneme2008
GO
create table tblDeneme2008 (a int)
GO
insert tblDeneme2008 select 1
GO
Şimdi taşıma adımlarına geçelim
- 2008 sunucusunda bulunan taşınacak DB’ye sağ tıklayıp Tasks >> Generate Scripts bölümüne geliyoruz.
- Açılan ekranda next yapıp gelen ekranda çalışmak istediğimiz veritabanını seçiyoruz. Yani bu örnek için dbDeneme2008. Next’e tıklıyoruz.
Script Version kısmında SQL Server 2005 ve Script Data kısmında True seçerek Next’e tıklıyoruz.
Choose Object Types kısmından ilgili objeleri seçiyoruz. (SP,Function,Table,View vs.) Bu Örneğimizde sadece table olduğu için tables’ı seçip next’e basıyoruz.
Tüm table’ları seçiyoruz ve next’e basıyoruz.
Script’i file’a save etmek istediğimizi belirtip next’e basıyoruz.
Summary kısmında yaptığımız işlemin bir özetini görüyoruz.
Finish’e basarak işlemi sonlandırıyoruz.
2005 sunucuya geçip dbDeneme2008 adlı yeni bir boş DB create ediyoruz.
create database dbDeneme2008
GO
8. Adım sonucunda oluşan script’i 2005 sunucusunda execute ediyoruz.
İşlem tamamlandı. 2005 sunucusunda oluşan DB’ye baktığımızda table’ların ve dataların geldiğini göreceğiz.
Bu makalemizde 2008’den 2005’e bir Database’i generate script metodu ile nasıl taşıyabileceğimizi gördük.
Hocam peki 2017 den 2014 sürümüne geçiş yaptıgımızda datayı direk attach olarak içeri alabilirmiyiz ?