MDF veya BAK dosyası oluşturmak için kullanılan SQL Server sürümünü belirlemenin bir yolu var mı?


19

MDF dosyası olarak depolanan bir SQL Server DB yerel bir kopyası var. Bu dosyayı oluşturmak için hangi SQL Server sürümünün kullanıldığını anlamanın bir yolu var mı?

Yanıtlar:


8

0x12064 uzaklıktaki iki bayta bakarak bir veritabanının birincil MDF dosyasının sürümünü belirleyebilirsiniz. Bkz . MDF dosyasının veritabanı sürümünü belirleme .

Gelen .bakdosyalar alt bayt 0xEAC ve yüksek 0xEAD olduğunu.

MS SQL için çoğu dahili veritabanı sürüm numaralarını burada bulabilirsiniz .


1
Not! Bu, MS SQL'in x64 sürümlerinde farklı görünmektedir. Her durumda 4 blok vardır - SFMB, SSET, VOLB, MSCI. Sürüm MSCI bloğunda. Sorun, blok boyutunun sabit olmamasıdır. Neyse ki blok boyutu 512'ye (0x200) bölünebilir. Yani her 512 bayt ara ve "MSCI" ara. Sonra daha düşük bayt için 172 bayt (0xAC) ve daha yüksek bayt için bir sonraki bayt atlayın.
Nux

22

HEADERONLY RESTORE kullanın, ör.

RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'

Çok sayıda sütun alırsınız, ancak ilgilendiğiniz SQL Server sürüm numarasını vermesi gereken SoftwareVersionMajor, SoftwareVersionMinor ve SoftwareVersionBuild'dir. Örneğin sistemimizde, bunlar 10.0.4000 (2008 SP2) anlamına gelen 10, 0 ve 4000'dir.

Ancak, sunucunun çalıştığı sürümde geri yüklenmek için çok eski bir yedekleme ile bunu yapmaya çalışırsanız ne olacağından emin değilsiniz, ancak - sadece bir hata ve hiçbir bilgi alabilirsiniz (ancak kendi başına en azından bazı ipuçları sağlayacaktır) olduğu sürüm).


1
Bunu deneyecektim, fakat herhangi bir yedekleme cihazım yok :-(. Öneri için teşekkürler!
Ben McCormack

1
SQL 2008'de SQL 2012 yedeklemesini test ettiğinizde bu sorgudan hiçbir kullanılabilir sonuç elde edemeyeceğinizi unutmayın.
Nux

6

MDF dosyaları için bu komutu deneyin:

dbcc checkprimaryfile ('c:\MyApp\AppData\foo.mdf', 2)

Bu çıkış değerleri ile 3 özellikleri olacak: Database name, Database versionve Collation.

Sözdizimi aşağıdaki gibidir (komut belgesizdir, bu nedenle burada daha fazla bilgi vardır ):

DBCC CHECKPRIMARYFILE ({'DosyaAdı'} [, opt = {0 | 1 | 2 | 3}])

DosyaAdı, SQL Server Veritabanı Birincil Veri Dosyası .mdf dosyasının asıl yolundan başka bir şey değildir.

Opt = 0 - Dosyanın bir SQL Server Veritabanı Birincil Veri dosyası (.mdf) olup olmadığını doğrular.

Opt = 1 - Veritabanıyla ilişkili tüm dosyaların Veritabanı Adını, Boyutunu, Maks. Boyutunu, Büyümesini, Durumunu ve Yolunu döndürür.

Opt = 2 - Veritabanı Adı, Sürüm ve Harmanlama bilgilerini döndürür.

Opt = 3 - Veritabanıyla ilişkili tüm dosyaların Adını, Durumunu ve Yolunu döndürür.


1
daha anlamlı olması için cevabınıza bir açıklama eklemek isteyebilirsiniz.
Drew Khoury

0

İyi soru! SQL Server 2008 R2 yedek dosyasını SQL Server 2005'e geri yüklemeye çalışırken deneme yanılma sürecinin dışında buna inanmıyorum. Açıkçası bu işe yaramaz. Management Studio'yu kullanmanın ve geri yükleme için içerik düğmesine tıklamanın size ilginç bir şey gösterip göstermeyeceğini hatırlayamıyorum.

Onları denemedim, ancak Red Gate'in Sanal Geri Yükleme gibi bir üçüncü taraf aracının size söyleyebileceği - yedekleme dosyasının "içindeki" veritabanına bakmanıza izin veriyor. http://www.red-gate.com/products/dba/sql-virtual-restore/



0

Bunu yapmak için gördüğüm en iyi yolu , SQL Server MSDN forumlarında bu yazıdan toplandı .

Temelde, dosyaya girmeyi ve mdf dosyasının önyükleme sayfasını incelemeyi içerir.

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.