SQL Server 2008 R2 Generate Script

Merhaba;
Bu yazımda SQL Server 2008 R2’de generate script özelliğinden bahsetmek istiyorum.

Bilindiği gibi SQL serverda aldığımız yedekleri geriye dönük olarak restore edemiyoruz. Yani 2008 üstünde aldığımız bir yedeği 2005 veya 2000e restore edemiyorduk. Hatta 2008 R2den 2008e bile restore yapılamıyor. Çünkü hepsi birbirinden farklı versiyonlar.

Fakat generate script özelliği ile veritabanımızı (buna datalar da dahil) t-sql komutlarına çevirip, diğer versiyonlar üstünde çalıştırabilir hale getirebiliyoruz.

Haydi yapalım;

Yine SSMS üstünde. scriptini almak istediğimiz dbnin üstüne sağ tıklayıp tasklerden generate script diyoruz. Ben adventureWorks dbsi üstünden gdieceğim. Benim serverim 2008 R2 ve 2005e aktarım yapacağım.

 

 

 

 

 

Bu ekranda hangi objelerin scprite dönüştürülmesini istiyorsak seçiyoruz. Ben all database onjects seçiyorum. Yani tüm objeler aktarılacak. Ve next diyorum.

 

 

 

Bu ekranda scriptin nasıl kaydedileceğini seçiyoruz. Eğer istersek bir web service ile yayınlayabilirizde.

Save to file seçersek; scripti bir t-sql dosyasına export eder. Single file per object seçilir ise her nesneyi ayrı dosyalara export eder.

Save to Clipboard seçersek herhangi bir yere paste adip kullanabiliriz. Yani sanki ctrl + c ile bir yazıyı kopyalamış gibi olur.

Save to new query windows seçilirse scripti yeni bir query ekranına yazar.

 

Ve advance butonuna tıkladım. Buradaki parametreler önemli. Hepsini tek tek anlatmayacağım ama ilk etapta önemli olanların üstünden geçelim.

Script for Server Version: Bu seçenek ile hangi versiyona script hazırlıyorsak onu seçebiliriz. Ben 2005 seçtim.

Scripts Login: Bu seçenek ile dbdeki userlarıda taşımış oluruz.

Type of data to script: Bu seçenekle dbnin data ve şemalarının taşınmasını ayarlıyoruz. Ben Schema and data yı seçtim. Yani hem şemalar hemde datalar taşınacak.

Yine aşağıdan gerekli olabilecek seçenekleri true olarak işaretleyip scripte dahil edebilirsiniz.

Next dedikten sonra bir özet ekranı geliyor. Kontrol ettikten sonra. Next diyoruz ve script oluşturulmaya başlıyor.

Script oluşturma başarılı oldu. Şimdi de bunu 2005e import edelim.

Scripte çift tıklıyorum ve management studioyoda açıp çalıştıracaktım. Fakat şöyle bir hata ile karşılaştım.

 

 

Bunun sebebi query dosyasının yaklaşık 500 MB olması 🙂 Zaten neredeyse hiç bir text editörde bu dosyayı açamiyor.

Bizde bu işlemi command promtu kullanarak yapacağız.
cmd yi açıp şu satırı yazıyorum. Ve db oluşturulmaya başlıyor.

osql -S [servername] -U [username] -P [password] -i [Dosya yolu]
osql -S s152mtest\SQL2005 -U sa -P ****** -i c:\adventure.sql

Bu işlem büyük veritabanlarında uzun sürebiliyor.

Ve görüldüğü gibi gibi 2008 R2den 2005e yani geriye dönük veritabanını taşımış olduk.

 

Yalnız şunuda belirtmeliyim ki script yöntemini çoğu zaman sağlıklı bulmadım. Tam olarak scripte güvenip iş yapmanızı tavsiye etmem. Ama zor durumlarda hızır gibide yetişir 🙂

Umarım faydalı olmuştur.

Kolay gelsin.

12 comments on “SQL Server 2008 R2 Generate Script

  1. üstad eline, koluna sağlık, harika bir bilgi, sayende yedekleri 2005 formatında aldım birde sorunsuz sql2005 e aktarsam sıkıntım kalmayacak.
    Not: sadece scipt olarak almak yeterli değilmi , ayrıca db almaya gerek yok ?

    • Teşekkür ederim yorumunuz için.
      Eğer scipti data ile birlikte alırsanız ekstradan yedeğe ihtiyaç yok. Zaten yedek alsanız bile 2005 üstüne resotre edemeyeceksiniz.
      Önerim siz bir yedeğinizi her ihtimale karşı alın, bir kenarda dursun. Sonrasında script ile 2005 üstüne alabilirsiniz. Burada önemli olan sadece 2008de olan bir özelliğin veritabanı üstünde kullanışmamış olması. Bu durumda script yapılamayabilir. Buna dikkat etmelisiniz.
      İyi çalışmalar.

  2. merhabalar, yazınınzla ilgili bir durum oluştu fakat ben çözemiyorum, şöyleki .bak dosyasının yedeğini aldım ve eski veritabanını tamamen sildim, elimde script yok yani sadece .bak dosyası var. Localde script almaya çalışıyorum başka bir şirketteki yeni serverda oluşturmak için fakat eski server ile localdeki serverım arasında sürüm sorunu yaşıyorum. bununla ilgili ne önerirsiniz acaba ?

    • Merhaba;
      bak dosyasını hangi versiyondan oluşturdunuz? Ve hangi versiyona restore etmeye çalışıyorsunuz?
      Eğer üst versiyon özelliklerini kullanıyorsa veritabanınız, alt versiyona script oluşturmanız hata verecektir, Örneğin; sql 2008de sadece date tipi var fakat daha önceki sürümlerde yok, bunu yaparken hata verecektir. Bunlara dikkat etmenizi öneririm.

      • 10.50.1600 den 10.00.2531 arasında çalışıyorum yani bunun için artık yapabiliceğim bir şey yok mu ?

      • hata mesajı olarak şunu veriyor :
        System.Data.SqlClient.SqlError: The database was backed up on a server running version 10.50.1600. That version is incompatible with this server, which is running version 10.00.2531. Either restore the database on a server that supports the backup, or use a backup that is compatible with this server. (Microsoft.SqlServer.Smo)

      • Siz script oluşturmada hata almıyorsunuz, dbyi restore etmeye çalışlıyorsunuz eski versiyona, bu yüzden yapamazsınız. İlk önce 2008 R2 bir versiyona restore etmelisiniz. Sonrasında script alabilirsiniz.

  3. Merhaba,

    Benim Şöyle bir sorum olacak 2008 R2 den 2008 Express için script alma yöntemi yok mudur? Script for Version Server seçeneğinde Express görünmüyor 😦

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s