SQL Server veritabanı daha düşük bir sürüme nasıl geri yüklenir?

Orijinal makale:

SQL Server Migration

Problem

SQL Server'ın daha yüksek bir sürümünden yedek veritabanlarınız var ve bazı nedenlerden dolayı yedeği daha eski bir sürüme geri yüklemeniz gerekiyorsa. Yakın zamanda böyle bir senaryoyla karşılaştım: SQL Server 2019 veritabanını SQL Server 2008R2'ye geri yüklemek. Veritabanı yedek dosyalarını geri yüklemeye çalıştığımda aşağıdaki hata mesajını alıyorum:

- Msg 1813, Seviye 16, Durum 2, Satır 1
Yeni veritabanı 'DatabaseName' açılamadı. CREATE DATABASE iptal edildi.
Msg 948, Düzey 20, Durum 1, Satır 1
'DatabaseName' veritabanı 655 sürümü olduğu için açılamıyor. Bu sunucu 611 ve önceki sürümleri destekliyor. Düşürme yolu desteklenmemektedir.

veya benzer bir hata.

Bu hata mesajı, SQL Server geri yükleme sırasında veritabanı sürümünü kontrol ettiği ve daha yeni bir SQL Server sürümünden daha eski bir SQL Server sürümüne veritabanı geri yüklemenize izin vermediği için oluşturulur. Atach ile aynı.

Bu yazıda, bir veritabanını daha yüksek bir SQL Server sürümünden daha düşük bir SQL Server sürümüne düşürmek için bir yaklaşıma bakacağız. Çözüm test edilmiştir ve küçük bir veritabanı boyutuyla çalışmaktadır.

Çözüm

Sorun mesajındaki hata mesajı, SQL Server veritabanı dosyaları (*.mdf, *.ndf ve *.ldf) ve arşivler geriye dönük uyumlu olmadığı için oluşur. SQL Server'ın daha yüksek bir sürümünden oluşturulan bir veritabanını SQL Server'ın daha düşük bir sürümüne geri yükleyemememizin veya ekleyemememizin nedeni budur. Bununla birlikte, bir veritabanını daha yüksek bir SQL Server sürümünden daha düşük bir SQL Server sürümüne düşürmemize yardımcı olabilecek birkaç seçenek vardır.

Bu seçenekler şunları içerir:

  • SQL Server Management Studio'da kod oluşturma sihirbazını kullanın
  • SQL Server Integration Services kullanın
  • Özel komut dosyaları ve BCP'ler oluşturun

Bu yazıda SQL Server Management Studio'daki kod oluşturma sihirbazını kullanacağız.

İşte izlenmesi gereken temel adımlar:

  1. SSMS'deki komut dosyası oluşturma sihirbazını kullanarak SQL Server'ın daha yüksek sürümünden veritabanı şemasını ve veri komut dosyasını oluşturun.
  2. SQL Server'ın alt sürümüne bağlanın ve önceki adımda oluşturulan SQL komut dosyalarını çalıştırın.

Bir sonraki bölümde, bir SQL Server 2012 veritabanını bir SQL Server 2008 R2 veritabanına düşürme adımlarını açıklayacağım.

Not: Gösterim amacıyla, SQL Server 2012 (ana bilgisayar SRV02\SQLSERVER2012) üzerinde barındırılan TEST_DB veritabanını SQL Server 2008 R2'ye (ana bilgisayar SRV01\SQLSERVER2008) düşüreceğiz.

Resimler orijinal makaleden görülebilir.

SSMS

komut dosyası oluşturma sihirbazını kullanarak SQL Server veritabanının sürümünü düşürme adımları

Adım 1

SSMS'deki Script Generation Wizard'ı kullanarak SQL Server 2012'nin TEST_DB veritabanı şemasının (SRV02\SQLSERVER2012) bir betiğini oluşturun.

Object Explorer'da SRV02\SQLSERVER2012'ye bağlanın, TEST_DB veritabanına sağ tıklayın, Tasks'ı genişletin ve "Generate Scripts..."'i seçin.

Bu, sihirbazı başlatır: Komut Dosyaları Oluştur ve Yayınla. Giriş ekranını atlamak ve Nesneleri Seç ekranına devam etmek için Sonraki düğmesine tıklayın. Bu ekrandan "Tüm veritabanını ve tüm veritabanı nesnelerini komut dosyası haline getir" seçeneğini seçin ve "Komut Dosyası Seçeneklerini Ayarla"

seçeneğine ulaşmak için Sonraki tuşuna tekrar basın.

Bu ekrandan, kod dosyasını kaydetmek istediğiniz konumu belirtin ve ardından Gelişmiş düğmesine tıklayın.

Gelişmiş Komut Dosyası Seçenekleri iletişim kutusunda şunları seçin:

  • Sunucu Sürümü için Script'i SQL Server 2008 R2 (veya istediğiniz sürüm)
  • olarak ayarlayın
  • Kodlanacak veri türleri seçeneğini Şema ve Veri olarak ayarlayın - bu seçenek çok önemlidir çünkü tablo için verileri oluşturan şey budur
  • "Table/View Options" altında Script Triggers, Script Indexes ve Script Primary Keys öğelerini True
  • olarak ayarlayın

İşiniz bittiğinde, Gelişmiş Komut Dosyası Seçenekleri iletişim kutusunu kapatmak ve Komut Dosyası Seçeneklerini Ayarla sayfasına dönmek için Tamam'a tıklayın. Burada artık Özet sayfasına devam etmek için İleri'ye tıklayabilirsiniz.

Özet sayfasında seçimlerinizi gözden geçirdikten sonra, komut dosyalarını oluşturmak için Sonraki düğmesine tıklayın.

Komut dosyaları başarıyla oluşturulduktan sonra, Komut Dosyası Oluşturma ve Yayınlama Sihirbazını kapatmak için Bitir düğmesini seçin: Komut Dosyası Oluşturma ve Yayınlama.

Adım 2

SQL Server 2008 R2'ye (SRV01\SQLSERVER2008) bağlanın ve ardından düşük sürümde TEST_DB veritabanının şemasını ve verilerini oluşturmak için Adım 1'de oluşturulan SQL komut dosyalarını çalıştırın.

Object Explorer'da SRV01\SQLServer2008'e (SQL Server'ın eski sürümü) bağlanın, ardından SQL Server Management Studio'da Adım 1'de oluşturduğumuz betiği seçin: File/Open/File ..., dosyayı seçin ve tıklayın: open.

Komut dosyasını yükledikten sonra, TEST_DB veri ve günlük dosyaları için doğru konumu belirtmek üzere değişiklik yaptığınızdan emin olun. İşiniz bittiğinde, SRV01\SQLServer2008 örneğinde TEST_DB veritabanını oluşturmak için komut dosyasını çalıştırın.

Başarılı bir şekilde yürütüldükten sonra, TEST_DB veritabanının başarıyla düşürüldüğünü görmek için Nesne Gezgini'ndeki Veritabanı klasörünü /yenileyin/.

Notlar

Bu yaklaşımı kullanırken bilmeniz gereken birkaç şey var:

  • Bu çözüm, veritabanı nesnelerini oluşturmak için komut dosyalarına ve ayrıca tablolardaki veriler için INSERT operatörlerine sahip tek bir SQL dosyası oluşturur.
  • Büyük veritabanları için, hem şemayı hem de verileri yazarsanız SQL dosyası çok büyüyebilir ve bir düzenleyiciye yüklemek zor olabilir. Dosya çok büyükse editörden bellekle ilgili bir hata mesajı da alabilirsiniz.
  • Yaklaşık 1 GB veya daha fazla büyük veritabanları için bu yaklaşım işe yaramazsa, veritabanını taşımak için SSIS kullanmayı veya nesneleri komut dosyası haline getirmek için özel komut dosyaları oluşturmayı ve her bir tablo için verileri BCP'ye aktarmayı düşünmelisiniz. Veriler olmadan şema oluşturmak için bu kod oluşturma sihirbazını kullanabilir ve verileri dışa ve içe aktarmak için SSIS veya BCP'yi kullanabilirsiniz
  • .
  • Bu yaklaşım SQL Server 2005'ten SQL Server 2019'a kadar çalışır. Bazı komut dosyası seçenekleri yeni sürümlerde biraz farklı olabilir, ancak süreç aynı kalır.
  • Komut dosyasını çalıştırmadan önce, veritabanı dosya yolu, veritabanı seçenekleri vb. gibi her şeyin doğru göründüğünden emin olmak için komut dosyasını gözden geçirmelisiniz
  • .
  • Ayrıca, daha düşük sürümde bulunmayan yeni işlevler kullanırsanız, SQL Server nesneleri oluşturamayacaktır ve oluşturulan komut dosyalarını gözden geçirmeniz ve kodu buna göre güncellemeniz gerekecektir.
  • Çok basit bir veritabanı için bu yaklaşım oldukça kolay çalışacaktır, ancak daha karmaşık bir veritabanı için komut dosyasında bazı değişiklikler yapmak için biraz zaman harcamanız gerekebilir.

Sonraki Adımlar

  • Sorunlardan kaçınmak için, SQL Server'ı ve veritabanını daha yüksek bir SQL Server sürümüne yükseltmeden önce her zaman tam bir veritabanı yedeklemesi gerçekleştirdiğinizden emin olun. Ayrıca, uygulamayı kullanıcılara sunmadan önce iyice test ettiğinizden emin olun.
  • Gerekli zaman ve depolama çok büyük olabileceğinden, bu sürüm düşürme seçeneğini bir yükseltmeden geri dönmek için son çare olarak düşünün.
  • Çok büyük bir veritabanında, veri ihtiyaçlarını desteklemek için yeterli depolama alanına sahip olduğunuzdan emin olun
  • .
  • Satır ve nesne sayısını kontrol ettiğinizden ve uygulamanızı üretime almadan önce test ettiğinizden emin olun
  • .


Comments

No Comments To Display

Add Comment

Form geçici olarak kilitlenmeden önce 3 deneme hakkınız vardır.