SQL Server yedeklemeyi geri yüklerken hata oluşuyor


15

Prod (Windows Server 2003 üzerinde SQL Server 2000) taşımak gerekir dev (Windows Server 2008 üzerinde SQL Server 2005) bir veritabanı var. Sürecim aşağıdaki gibidir:

  1. Geliştirici oturum açın, SQL Server Management Studio'yu açın
  2. Veritabanına sağ tıklayın | Görevler | Destek olmak. Tüm varsayılan seçenekleri koru (tam yedekleme vb.)
  3. .Bak dosyasını yerel olarak prod'ye (ağ sürücüsü yok) taşıyın, prod'a giriş yapın, SQL Server Enterprise Manager'ı açın.
  4. Veritabanları düğümüne sağ tıklayın | Tüm Görevler | Veritabanını geri yükle.
  5. Aynı veritabanı adını yansıtacak şekilde Geri yükleme'yi veritabanı olarak değiştirin.
  6. 'Cihazdan' radyo düğmesini tıklayın. 'Cihaz Seç' seçeneğini tıklayın
  7. Geri yükleme kaynağı: Ekle ... 'yi tıklayın, .bak dosyasına göz atın (küçük - yalnızca 6mb)

Şimdi veritabanını geri yüklemeye hazırım, bu yüzden Tamam'ı tıklatıyorum ve aşağıdaki hatayı alıyorum:

"'E: ... bak' aygıtındaki ortam ailesi yanlış oluşturulmuş. SQL Server bu ortam ailesini işleyemiyor.

Bu hata hemen.

Bu birkaç farklı varyasyonları denedim - farklı bir db adı ve günlük dosyası adları (nereden kaynaklandı) ile dev makineye geri yükleme, daha önce dosyalara aynı fiziksel yolu ile boş bir veritabanı oluşturma ve geri yüklemeye çalışıyorum, birkaç farklı .bak dosyası oluşturmak ve onları prod'a yüklemeden önce doğrulandıklarından emin olmak. Bir gerçek için biliyorum .mdf ve .ldf dosyaları dizin üzerinde prod var, ama dosyaları kendilerini yok. Geri yüklemek için Tamam'ı tıklamadan önce, seçenekler sekmesine gidin, bunun yerine aşağıdaki hatayı alıyorum:

Hata 3241: 'E: ... bak' aygıtındaki ortam ailesi yanlış oluşturulmuş. SQL Server bu medya ailesini işleyemiyor. RESTORE FILELIST anormal olarak sona eriyor.

Parlak fikirleri olan var mı?


Katılıyorum, sadece bir gün geçirdim ve zamanımı boşa harcadım, geriye doğru uyumluluk sorunu gibi görünüyor, benim durumumda 2k8 R2 ila 2k5.

Yanıtlar:


7

MSSQL2008'deki yedekleme başlıkları, muhtemelen sorunun kaynağı olan MSSQL2005'tekinden farklıdır. Yedekleme geri yükleme paradigması yerine DB'yi dışa aktarmayı deneyin veya DEV sunucunuzda MSSQL2008'i kurun.


4

Mike Dimmick'in dediği gibi - SQL 2000, SQL 2005 yedeklerini tanımaz (Word 2000'in 2007'nin DOCX dosyalarını tanıyamaması gibi). Bu nedenle, verilerinizi SQL komut dosyaları gibi daha düşük bir payda biçiminde taşımanız gerekir. Şema ve veriler için tek bir SQL dosyası oluşturan SQL Server Barındırma Araç Seti'nin bir parçası olan Veritabanı Yayımlama Sihirbazı'nı deneyin .


1
SqlExpress'in kurulu olup olmadığını kontrol etmek önemlidir (sahip olduğunuzu fark etmeden kurmuş olabilirsiniz). SqlExpress'e yanlışlıkla giriş yapmak ve sonra panik yapmak çok kolaydır, çünkü 2008 veritabanını geri yüklemenize izin vermez. Bu muhtemelen bu hatayı almanın çok yaygın bir nedenidir.
Simon

2

Yedekleri SQL Server ailesinde, yani 2000 ila 2005 veya 2008'de ileri taşıyabilirsiniz, ancak geriye değil: SQL Server 2000 yedeklemesini SQL Server 2000'de geri yükleyemezsiniz.


1

Geri yüklemeye çalıştığınızda dosyanın oluşturulmasını engelleyen bir izin sorunu olabilir. Hedefe istediğiniz aynı adla yeni bir veritabanı oluşturmayı ve ardından üstünden geri yüklemeyi deneyin.

Ayrıca, yedeklemeyi harici bir sabit sürücüden veya ağ paylaşımından geri yüklemeye çalışıyorsanız, geri yüklemeyi denemeden önce yedekleme dosyasını yerel makineye kopyalamayı deneyin.


1

Varsayılan olarak SQL Server 2005'ten iki nesne kaşif vardır. Sanırım sunucu / sqlexpress nesnesi üzerinde çalışıyorsunuz. Bir başkasına geri yüklemeyi deneyin.


1

(Rahatlamış nefes.) Ahhhhh, işte sorun.

Uzak bir bilgisayarda çalışan SQL Server 2008 SP1 var. Veritabanını yedekledim, ancak SQL Server 2008 yerel kopyamı .bak dosyasından geri yükleyemedim.

[Yini] 'nin dediği gibi bu, SQL Server 2008 örneğimi değil, yerel bilgisayarımda SQL Server 2005 örneğimi açan SQL Server 2008 kopyasıydı . Cin.

Ve [Yini] ile tamamen aynı fikirdeyim - yeterince adil, SQL Server 2008 yedeklemesini 2005 örneğine geri yükleyemezsiniz, ancak Microsoft en azından bize iyi bir hata mesajı verebilir.

"'D: \ DatabaseBackup_21_02_2011.bak' aygıtındaki medya ailesi yanlış oluşturulmuş. SQL Server bu medya ailesini işleyemiyor."

Benim yedek değildi yanlış kurdu. SQL Server 2008 SP1 çalıştırırken bile bir SQL Server 2005 örneğine geri yüklenemez .

Bunu bir hata mesajına koymak gerçekten zor mu ............?


0

Birkaç düşünce:

  • Geri yüklediğiniz veritabanı yaklaşık olarak ne kadar? Bu hatayla ilgili
    tek destek makalesi SQL 2000 içindir ve büyük günlük dosyaları hakkında konuşur. SQL 2000'de olmasanız da, özellikle büyükse, günlüklerin boyutunu azaltmaya çalışmak yardımcı olabilir.

  • Veritabanını Dev sunucunuza geri yükleyebiliyor musunuz (farklı bir db adı olarak farklı dosyalara)? Bu, SQL 2005 söz konusu olduğunda dosyanın kendisinin iyi olup olmadığını kanıtlar.

  • Bu Dev sunucusundan Prod'a başka veritabanlarını geri yükleyebiliyor musunuz?


0

Herkese merhaba, Mike'ın Veritabanı Yayınlama Sihirbazı'nı önereceğimi önerdiği gibi güzel bir iş çıkarıyor.

Başlangıçta tamamen önermediğim bir geçici çözüm - biraz getto gibi görünüyor .


1) prod üzerinde db oluşturun, uygun haklara sahip bir db kullanıcısı oluşturun, güvenlik duvarınızda uzaktan erişime izin veren bağlantı noktasını açın
2) SQL Server Management Studio'daki geliştirmeden, db -> görevler -> verileri dışa aktarın. Hedef seçerken, xxx.xxx.xxx.xxx, 1764 bağlantı noktasını belirttiğinizden emin olun.
3) Aktarılacak tüm tabloları seçin, sonraki 100 kez tıklayın ve işiniz bitti.

UYARI: Bu, saklı yordamları kopyalamaz.
UYARI: Bu, int sütunları için Kimlikler üzerine kopyalanmaz

GÜNCELLEME: Görünüşe göre 2005'ten 2000'e gidemezsiniz. Aşağıdaki yazı bağlantı metnini buldum - yukarıdaki yöntemlerimi kullanabileceğiniz gibi görünüyor, ancak aynı zamanda tüm nesneleri kodlamak ve 2000'de çalıştırmak istiyorsunuz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.