Leí que es posible restaurar una base de datos en SQL Server siempre que restaure una versión anterior a una nueva, por razones de compatibilidad con versiones anteriores.
¿Alguien sabe de antemano si puede restaurar una base de datos desde un archivo * .bak para diferentes ediciones de SQL Server? Estamos moviendo una base de datos muy grande a través de FTP que tomará un par de días, por lo que preferimos hacer esto solo una vez. Si nadie responde cuando transferimos la base de datos a través de FTP, obviamente lo intentaremos y veremos si funciona mediante pruebas, y responderemos nuestra propia pregunta.
A continuación se muestra una consulta para obtener detalles de la versión de SQL Server. El productversion
está en el formato {major revision}.{minor revision}.{release revision}.{build number}
. En mi caso, {release revision}
tiene un valor 5500
para la fuente y 5512
para el destino. Entonces eso se ve bien. Sin embargo, el edition
es diferente.
Consulta:
SELECT
SERVERPROPERTY('productversion'),
SERVERPROPERTY('productlevel'),
SERVERPROPERTY('edition')
Base de datos de origen:
10.0.5500.0
SP3
Developer Edition (64-bit)
Base de datos de destino:
10.0.5512.0
SP3
Enterprise Edition (64-bit)
fuente
Respuestas:
De Desarrollador a Empresa estará bien, solo asegúrese de que si está utilizando licencias de procesador, tenga licencias en el servidor de destino para cubrir todas las CPU. Y no es suficiente solo ocultarlos de SQL, si están físicamente conectados a la máquina, usted es responsable de ellos.
Además, cuando pasa de una versión inferior a una versión superior, la versión de su base de datos aumentará. Hay algunos escenarios en los que esto puede ser problemático; por ejemplo, si está utilizando 15,000 particiones compatibles con una compilación específica de 2008, no funcionará cuando actualice a una compilación específica de 2008 R2. También puede depender de optimizaciones (y tener soluciones alternativas) que en realidad son errores en una compilación anterior, pero que se corrigen en la nueva compilación, y esto puede conducir a un peor rendimiento. También es vital revisar cualquier indicador de rastreo en uso en la fuente y determinar si también deben habilitarse en el destino. No importa trabajos, inicios de sesión, etc.
Por supuesto que no puedes ir hacia atrás. Nunca he intentado una degradación menor como 10.0.5512 -> 10.0.5500, pero definitivamente no es posible bajar en service pack o versión. Por lo tanto, si tiene una base de datos de 2012 en su instancia de Developer Edition y desea ponerla en producción en su instancia de 2008, tendrá que trabajar mucho para usted (consulte aquí y aquí ), especialmente si ha utilizado las funciones de 2012 .
Pero para cubrir otros casos que podrían hacer que las personas se enfrenten a esta pregunta (por ejemplo, alguien quiere ir de Desarrollador -> Estándar o Empresa -> Express o lo que sea) ...
Hay otras ediciones -> actualizaciones de ediciones que no funcionarán tan bien, por ejemplo, de Desarrollador -> Express si ha utilizado alguna función que no es compatible con Express (y lo mismo ocurre con cualquier edición que no sea Enterprise). Algunos ejemplos de características que no podrá usar en ediciones de nivel inferior (en cuyo caso la restauración morirá en el momento en que intente poner la base de datos en línea):
No sé si hay una manera de saber esto directamente desde el archivo .BAK (estoy seguro de que hay algo de magia que se puede extraer de los encabezados de página en alguna parte, o si tienes un fin de semana para grabar con un editor hexadecimal) , pero mientras la base de datos aún está intacta en la instancia de origen, siempre puede hacer lo siguiente para ver si está utilizando alguna función que esté disponible debido a la SKU en la que se encuentra:
No estoy seguro de si SQL Server Audit debería estar en esa lista: la exclusividad de edición de esa característica ha cambiado, por lo que probablemente dependa de lo que esté haciendo con ella. Hay otras cosas que podría estar usando pero que no aparecerán en el DMV (algunas porque están en su código, que el DMV no analiza, y otras porque su base de datos depende de elementos externos como el Agente SQL Server , Service Broker, etc.):
También hay casos en los que no podrá pasar de Developer a Express debido a las limitaciones de tamaño de archivo (las bases de datos Express están limitadas a 10 GB en tamaño de archivo de datos total).
Por supuesto, puede haber otras trampas de las que no se le advertirá: no evitarán la migración, pero pueden conducir a un rendimiento muy diferente en el objetivo. Ejemplos:
NOEXPAND
. Y es posible que ni siquiera se dé cuenta de que esta capacidad es la razón por la cual sus consultas se ralentizan repentinamente.ACTUALIZACIÓN basada en este duplicado :
Puede haber casos en los que intente restaurar una base de datos de una edición determinada a una edición menor (incluso en la misma versión), y obtenga errores que no son útiles :
Esto no es muy intuitivo. Sin embargo, si profundiza en los registros de eventos de SQL Server, verá más errores útiles (solo un ejemplo):
Ahora, eso no es del todo cierto: también puede restaurar a la Edición de evaluación o la Edición de desarrollador, pero eso no viene al caso. Para restaurar esta base de datos, básicamente tiene dos opciones:
Una variación en (2) sería simplemente eliminar la partición y otras características de la base de datos de origen, y tomar otra copia de seguridad. Pero si no está roto ...
fuente
Developer y Enterprise son el mismo software, solo que con diferentes acuerdos de licencia.
Debería estar bien restaurando esta base de datos en su destino.
fuente