Tengo una copia local de una base de datos de SQL Server almacenada como un archivo MDF. ¿Hay alguna manera de saber qué versión de SQL Server se usó para crear ese archivo?
Tengo una copia local de una base de datos de SQL Server almacenada como un archivo MDF. ¿Hay alguna manera de saber qué versión de SQL Server se usó para crear ese archivo?
Respuestas:
Puede determinar la versión del archivo MDF primario de una base de datos mirando los dos bytes en el desplazamiento 0x12064. Consulte Cómo determinar la versión de la base de datos de un archivo MDF .
En los .bak
archivos, el byte inferior es 0xEAC y el superior es 0xEAD.
Puede encontrar la mayoría de los números de versión de la base de datos interna para MS SQL aquí .
Utilice RESTORE HEADERONLY, p. Ej.
RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'
Obtendrá muchas columnas, pero las de interés son SoftwareVersionMajor, SoftwareVersionMinor y SoftwareVersionBuild, que deberían proporcionarle el número de versión de SQL Server. En nuestro sistema, por ejemplo, estos son 10, 0 y 4000, lo que significa 10.0.4000 (2008 SP2).
Sin embargo, no estoy seguro de lo que sucede si intenta hacer esto con una copia de seguridad que es demasiado antigua para ser restaurada en la versión que está ejecutando el servidor; es posible que obtenga un error y no haya información (aunque eso en sí mismo al menos proporcionaría algunas pistas sobre la versión es de).
Para archivos MDF intente este comando:
dbcc checkprimaryfile ('c:\MyApp\AppData\foo.mdf', 2)
Se dará salida 3 propiedades con valores: Database name
, Database version
y Collation
.
La sintaxis es la siguiente (el comando no está documentado, por lo tanto, hay más información aquí ):
DBCC CHECKPRIMARYFILE ({'FileName'} [, opt = {0 | 1 | 2 | 3}])
FileName no es más que la ruta real del archivo .mdf del archivo de datos primarios de la base de datos de SQL Server.
Opt = 0: verifica si el archivo es un archivo de datos primarios de la base de datos de SQL Server (.mdf).
Opt = 1: devuelve el nombre de la base de datos, el tamaño, el tamaño máximo, el crecimiento, el estado y la ruta de todos los archivos asociados a la base de datos.
Opt = 2: devuelve el nombre de la base de datos, la versión y la información de clasificación.
Opt = 3: devuelve el nombre, el estado y la ruta de todos los archivos asociados a la base de datos.
¡Buena pregunta! No lo creo, aparte del proceso de prueba y error de, por ejemplo, tratar de restaurar un archivo de copia de seguridad de SQL Server 2008 R2 en SQL Server 2005. Obviamente, eso no funcionará. No recuerdo de antemano si usar Management Studio, y hacer clic en el botón de contenido para una restauración, le mostrará algo interesante.
No los he probado, pero es posible que una herramienta de terceros como la Restauración virtual de Red Gate le diga: le permite mirar la base de datos "dentro" del archivo de copia de seguridad. http://www.red-gate.com/products/dba/sql-virtual-restore/
Puede encontrar esto utilizando la información en la página de inicio de la base de datos. Escribí sobre esto en http://sankarreddy.com/2010/05/database-internal-version-create-version-and-current-version/
La mejor forma en que he visto hacer esto se obtuvo de esta publicación en los foros de SQL Server MSDN.
Básicamente implica entrar en el archivo y examinar la página de inicio del archivo mdf.