Mam lokalną kopię bazy danych SQL Server przechowywaną jako plik MDF. Czy istnieje sposób na określenie, której wersji programu SQL Server użyto do utworzenia tego pliku?
Mam lokalną kopię bazy danych SQL Server przechowywaną jako plik MDF. Czy istnieje sposób na określenie, której wersji programu SQL Server użyto do utworzenia tego pliku?
Odpowiedzi:
Możesz określić wersję podstawowego pliku MDF bazy danych, patrząc na dwa bajty z przesunięciem 0x12064. Zobacz Jak ustalić wersję bazy danych pliku MDF .
W .bak
plikach niższy bajt to 0xEAC, a wyższy to 0xEAD.
Większość numerów wewnętrznych wersji bazy danych dla MS SQL można znaleźć tutaj .
Użyj PRZYWRACANIA SŁUCHAWKOWEGO, np
RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'
Otrzymasz wiele kolumn, ale interesujące są SoftwareVersionMajor, SoftwareVersionMinor i SoftwareVersionBuild, które powinny dać ci numer wersji SQL Server. Na przykład w naszym systemie są to 10, 0 i 4000, co oznacza 10.0.4000 (2008 SP2).
Nie jestem pewien, co się stanie, jeśli spróbujesz to zrobić z kopią zapasową, która jest zbyt stara, aby można ją było przywrócić w wersji, na której działa serwer - może jednak pojawić się błąd i brak informacji (chociaż samo w sobie dostarczyłoby to pewnych wskazówek na temat wersja, z której pochodzi).
W przypadku plików MDF wypróbuj to polecenie:
dbcc checkprimaryfile ('c:\MyApp\AppData\foo.mdf', 2)
Będzie wyjście 3 nieruchomości o wartości: Database name
, Database version
i Collation
.
Składnia jest następująca (polecenie jest nieudokumentowane, dlatego więcej informacji tutaj ):
DBCC CHECKPRIMARYFILE ({„FileName”} [, opt = {0 | 1 | 2 | 3}])
FileName to nic innego jak rzeczywista ścieżka do pliku .mdf podstawowego pliku danych bazy danych SQL Server.
Opt = 0 - sprawdza, czy plik jest plikiem danych podstawowych bazy danych SQL Server (.mdf).
Opt = 1 - Zwraca nazwę bazy danych, rozmiar, maksymalny rozmiar, wzrost, status i ścieżkę wszystkich plików powiązanych z bazą danych.
Opt = 2 - Zwraca informacje o nazwie, wersji i sortowaniu bazy danych.
Opt = 3 - Zwraca nazwę, status i ścieżkę wszystkich plików powiązanych z bazą danych.
Dobre pytanie! Nie sądzę, poza procesem prób i błędów - powiedzmy - próby przywrócenia pliku kopii zapasowej SQL Server 2008 R2 do SQL Server 2005. Oczywiście to nie zadziała. Nie pamiętam, czy użycie Management Studio - i kliknięcie przycisku zawartości w celu przywrócenia - pokaże ci coś interesującego.
Nie próbowałem ich, ale możliwe jest, że powie ci to narzędzie innej firmy, takie jak Virtual Gate Red Gate - pozwala spojrzeć na bazę danych „wewnątrz” pliku kopii zapasowej. http://www.red-gate.com/products/dba/sql-virtual-restore/
Możesz to znaleźć, korzystając z informacji na stronie rozruchowej bazy danych. Napisałem o tym na stronie http://sankarreddy.com/2010/05/database-internal-version-create-version-and-current-version/
Najlepszy sposób, jaki kiedykolwiek widziałem, aby to zrobić, zebrano z tego postu na forach MSDN programu SQL Server.
Zasadniczo polega na wejściu do pliku i sprawdzeniu strony rozruchowej pliku mdf.