У мене локальна копія БД SQL Server, що зберігається як файл MDF. Чи є спосіб сказати, яка версія SQL Server була використана для створення цього файлу?
У мене локальна копія БД SQL Server, що зберігається як файл MDF. Чи є спосіб сказати, яка версія SQL Server була використана для створення цього файлу?
Відповіді:
Ви можете визначити версію первинного файлу MDF бази даних, переглянувши два байти при зміщенні 0x12064. Див. Розділ Як визначити версію бази даних файлу MDF .
У .bak
файлах нижчий байт - 0xEAC, а вищий - 0xEAD.
Ви можете знайти більшість внутрішніх номерів версій бази даних для MS SQL тут .
Використовуйте RESTORE HEADERONLY, напр
RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'
Ви отримаєте безліч стовпців, але цікавими є SoftwareVersionMajor, SoftwareVersionMinor та SoftwareVersionBuild, які мають надати номер версії SQL Server. Наприклад, у нашій системі це 10, 0 і 4000, тобто 10.0.4000 (2008 SP2).
Не впевнений, що трапиться, якщо ви спробуєте це зробити із резервною копією для відновлення версії, на якій працює сервер, але ви можете просто отримати помилку та відсутність інформації (хоча це само по собі могло б дати хоча б деякі підказки про версія від якої).
Для файлів MDF спробуйте виконати цю команду:
dbcc checkprimaryfile ('c:\MyApp\AppData\foo.mdf', 2)
Це буде виводити 3 властивості зі значеннями: Database name
, Database version
і Collation
.
Синтаксис наступний (команда недокументована, тому більше інформації тут ):
DBCC CHECKPRIMARYFILE ({'Ім'я файлу'} [, opt = {0 | 1 | 2 | 3}])
FileName - це не що інше, як фактичний шлях до файлу .mdf первинної бази даних SQL Server.
Opt = 0 - перевіряє, чи є файлом основні дані бази даних SQL Server (.mdf).
Opt = 1 - повертає ім’я бази даних, розмір, максимальний розмір, ріст, статус та шлях усіх файлів, пов’язаних із базою даних.
Opt = 2 - повертає ім'я бази даних, інформацію про версію та зіставлення.
Opt = 3 - Повертає ім'я, стан та шлях усіх файлів, пов’язаних із базою даних.
Гарне питання! Я не вірю в це, окрім процесу проб і помилок - скажімо - спроби відновити файл резервної копії SQL Server 2008 R2 на SQL Server 2005. Очевидно, це не вийде. Я не можу спогадати, чи використання програми Management Studio - і натискання на кнопку вмісту для відновлення - покаже вам щось цікаве.
Я не пробував їх, але можливо, що сторонній інструмент, такий як віртуальне відновлення Red Gate, скаже вам - він дозволяє переглянути базу даних "всередині" резервного файлу. http://www.red-gate.com/products/dba/sql-virtual-restore/
Ви можете знайти це за допомогою інформації на завантажувальній сторінці бази даних. Про це я писав на http://sankarreddy.com/2010/05/database-internal-version-create-version-and-current-version/
Найкращий спосіб, який я коли-небудь бачив для цього, був зібраний з цієї публікації на форумах MSDN на SQL Server.
В основному це включає потрапляння у файл та вивчення завантажувальної сторінки mdf-файлу.