Saya memiliki salinan lokal dari SQL Server DB yang disimpan sebagai file MDF. Apakah ada cara untuk mengetahui versi SQL Server apa yang digunakan untuk membuat file itu?
Saya memiliki salinan lokal dari SQL Server DB yang disimpan sebagai file MDF. Apakah ada cara untuk mengetahui versi SQL Server apa yang digunakan untuk membuat file itu?
Jawaban:
Anda dapat menentukan versi file MDF utama dari suatu basis data dengan melihat dua byte pada offset 0x12064. Lihat Cara menentukan versi database file MDF .
Dalam .bak
file byte yang lebih rendah adalah 0xEAC dan lebih tinggi adalah 0xEAD.
Anda dapat menemukan sebagian besar nomor versi basis data internal untuk MS SQL di sini .
Gunakan RESTORE HEADERONLY, mis
RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'
Anda akan mendapatkan banyak kolom, tetapi yang menarik adalah SoftwareVersionMajor, SoftwareVersionMinor, dan SoftwareVersionBuild, yang akan memberi Anda nomor versi SQL Server. Pada sistem kami, misalnya, ini adalah 10, 0, dan 4000, artinya 10.0.4000 (2008 SP2).
Tidak yakin apa yang terjadi jika Anda mencoba melakukan ini dengan cadangan yang terlalu lama untuk dipulihkan pada versi server yang sedang berjalan, namun - Anda mungkin hanya mendapatkan kesalahan dan tidak ada info (meskipun itu sendiri setidaknya akan memberikan beberapa petunjuk tentang versi dari).
Untuk file MDF, coba perintah ini:
dbcc checkprimaryfile ('c:\MyApp\AppData\foo.mdf', 2)
Itu akan menampilkan 3 properti dengan nilai-nilai: Database name
, Database version
dan Collation
.
Sintaks mengikuti (perintah tidak berdokumen, oleh karena itu info lebih lanjut di sini ):
CHECKPRIMARYFILE DBCC ({'FileName'} [, opt = {0 | 1 | 2 | 3}])
FileName hanyalah jalur sebenarnya dari File Data Primer Database SQL Server .mdf file.
Opt = 0 - Memverifikasi apakah file tersebut adalah file Data Dasar Database SQL Server (.mdf).
Opt = 1 - Mengembalikan Nama Basis Data, Ukuran, Ukuran Maks, Pertumbuhan, Status dan Jalur dari semua file yang terkait dengan basis data.
Memilih = 2 - Mengembalikan Nama Basis Data, Versi, dan informasi Collation.
Opt = 3 - Mengembalikan Nama, Status dan Jalur dari semua file yang terkait dengan database.
Pertanyaan bagus! Saya tidak percaya begitu, terlepas dari proses coba-coba - katakan - mencoba mengembalikan file cadangan SQL Server 2008 R2 ke SQL Server 2005. Jelas, itu tidak akan berhasil. Saya tidak dapat mengingat apakah menggunakan Management Studio - dan mengklik tombol isi untuk pengembalian - akan menampilkan sesuatu yang menarik.
Saya belum mencobanya, tetapi mungkin alat pihak ketiga seperti Red Gate's Virtual Restore akan memberi tahu Anda - ini memungkinkan Anda untuk melihat database "di dalam" file cadangan. http://www.red-gate.com/products/dba/sql-virtual-restore/
Anda dapat menemukan ini menggunakan informasi di halaman boot database. Saya menulis tentang ini di http://sankarreddy.com/2010/05/database-internal-version-create-version-and-current-version/
Cara terbaik yang pernah saya lihat untuk melakukan ini diperoleh dari posting ini di forum MSDN SQL Server.
Pada dasarnya ini melibatkan masuk ke file dan memeriksa halaman boot file mdf.