Restauración de copia de seguridad de la base de datos de SQL Server en la versión inferior

¿Cómo restaurar una versión superior del archivo de copia de seguridad de la base de datos de SQL Server en una versión más baja de SQL Server?

Utilizando SQL Server 2008 R2 (10.50.1600), hice un archivo de copia de seguridad desde esta versión del servidor y ahora quiero restaurarlo en el servidor de SQL Server 2008 (10.00.1600). En ese momento, cuando restauré en SQL Server 2008, aparece un error, es decir, Restore Failed porque:

Se realizó una copia de seguridad de la base de datos en un servidor que ejecuta la versión 10.50.1600. Esa versión es incompatible con este servidor, que ejecuta la versión 10.00.1600.

¿Cómo restaurar este archivo de copia de seguridad en este servidor?

No, no es posible degradar una base de datos. 10.50.1600 es la versión de SQL Server 2008 R2 . No hay forma de que pueda restaurar o adjuntar esta base de datos a la instancia de SQL Server 2008 en la que intenta restaurar (10.00.1600 es SQL Server 2008). Tus únicas opciones son:

  • actualice esta instancia a SQL Server 2008 R2 o
  • restablezca la copia de seguridad que tiene en una instancia de SQL Server 2008 R2, exporte todos los datos e impórtelos en una base de datos de SQL Server 2008.

Aquí están mis 2 centavos en diferentes opciones para completar esto:

Herramientas de terceros : probablemente la forma más fácil de realizar el trabajo es crear una base de datos vacía en la versión inferior y luego usar herramientas de terceros para leer la copia de seguridad y sincronizar la nueva base de datos creada con la copia de seguridad.

Red gate es uno de los más populares, pero hay muchos otros como ApexSQL Diff , ApexSQL Data Diff , Adept SQL , Idera …. Todas estas son herramientas premium, pero puede hacer el trabajo en modo de prueba;)

Generación de scripts : como ya se ha mencionado, siempre puede crear scripts de estructura y datos mediante SSMS, pero debe tener en cuenta el orden de ejecución. De forma predeterminada, los scripts de objetos no están ordenados correctamente y tendrá que encargarse de las dependencias. Esto puede ser un problema si la base de datos es grande y tiene muchos objetos.

Asistente de importación y exportación : esta no es una solución ideal, ya que no restaurará todos los objetos, sino solo las tablas de datos, pero puede considerarlas para realizar correcciones rápidas y sucias cuando sea necesario.

No necesariamente funcionará

  • Copia de seguridad / Restaurar : no funcionará cuando el destino sea una versión anterior de MS SQL.

  • Copiar base de datos : no funcionará cuando el destino sea SQL Server Express: “El servidor de destino no puede ser una instancia de SQL Server 2005 o posterior Express”.

  • Importación de datos : no copiará el esquema.

Trabajará

  • Generación de scriptsTareas -> Generar scripts . Asegúrese de establecer la versión deseada de SQL Server de destino en la opción Establecer opciones de secuencia de comandos -> Avanzado . También puede elegir si desea copiar el esquema, los datos o ambos. Tenga en cuenta que en el script generado, puede necesitar cambiar la carpeta DATA para los archivos mdf / ldf si pasa de no expreso a expreso o viceversa.

  • Servicios de publicación de bases de datos Microsoft SQL Server : viene con SQL Server 2005 y superior, creo. Descargue la última versión desde aquí . Requisitos previos: sqlncli.msi / sqlncli_x64.msi / sqlncli_ia64.msi , SQLServer2005_XMO.msi / SQLServer2005_XMO_x64.msi / SQLServer2005_XMO_ia64.msi (descargue aquí ).

Puede usar la funcionalidad llamada Export Data-Tier Application que genera .bacpac archivo .bacpac que consiste en un esquema de base de datos y datos.

En el servidor de destino, puede usar la opción Importar aplicación de nivel de datos que crea y rellena la nueva base de datos del archivo .bacpac creado .bacpac .

Si solo desea transferir el esquema de la base de datos, puede utilizar Extraer la aplicación de nivel de datos para crear el archivo y Implementar la aplicación de nivel de datos para implementar el esquema de la base de datos creada.

Probé este proceso en diferentes versiones de SQL Server de SQL 2014 a SQL 2012 y de SQL 2014 a SQL 2008R2 y funcionó bien.

No puede restaurar la base de datos (o adjuntar) creada en la versión superior a la versión inferior. La única forma es crear un script para todos los objetos y usar el script para generar la base de datos.

enter image description here

seleccione “Esquema y datos”si desea incluir ambas cosas en el archivo de script de respaldo
seleccione solo esquema , si solo se necesita el esquema.

enter image description here

Sí, ahora lo ha hecho con Create Script with Schema and Data of the Database.

Otra forma de hacerlo es usar la función “Copiar base de datos”:

Busque haciendo clic con el botón derecho en la base de datos de origen> “Tareas”> “Copiar base de datos”.

Puede copiar la base de datos a una versión inferior de Instancia de SQL Server. Esto funcionó para mí desde SQL Server 2008 R2 (SP1) – 10.50.2789.0 a Microsoft SQL Server 2008 (SP2) – 10.0.3798.0

Puedes probar esto.

  1. Crear una base de datos en SQL Server 2008.
  2. El uso de datos de importación incluye datos de importación de SQL Server R2 (o cualquier versión superior).
  3. utilice “RedGate SQLCompare” para sincronizar el script.

No es lindo, pero así es como lo hice, si tienes esta opción instalada en tu instalación de SQL 2008 R2 …

1) Haga clic derecho en la base de datos en “Tareas” de SQL Server 2008 R2 .. “Generar scripts” en el asistente, seleccione toda la base de datos y los objetos en el primer paso. En el paso “Establecer opciones de scripting”, debería ver un botón “Avanzado”, seleccionar esto y asegurarse de seleccionar “Script para versión de servidor” = SQL Server 2008 “no versión R2. Este es un paso crucial, porque” importar datos ” por sí solo no trae todas las claves primarias, constriants y cualquier otro objeto como procedimientos almacenados “.

2) Ejecute el script SQL generado en la nueva instancia de instalación o base de datos SQL Express o SQL Server 2008 utilizando la ventana de consulta o abra el script .sql guardado y ejecútelo, y debería ver la nueva base de datos.

3) Ahora haga clic derecho en la nueva base de datos y seleccione “Tareas” .. “Importar datos …” elija el origen como la base de datos R2 y el destino como la nueva base de datos. “Copie datos de una o más tablas o vistas”, seleccione la checkbox superior para seleccionar todas las tablas y luego el siguiente paso, ejecute el paquete y debe tener todo en una versión anterior. Esto debería funcionar para volver a una versión de 2005 también. Espero que esto ayude a alguien.

Tarea-> Generar secuencias de comandos … en Avanzado en “Tipos de datos para secuencia de comandos”, seleccione “Shema y datos” Y pruebe a ejecutar esta secuencia de comandos en su versión inferior

puede usar BCP dentro y fuera para tablas pequeñas.

Mandato BCP OUT: –

 BCP "SELECT * FROM [Dinesh].[dbo].[Invoices]" QUERYOUT C:\av\Invoices1.txt -S MC0XENTC -T -c -rc:\error.csv 

Mandato BCP IN: – Crear estructura de tabla para Invoicescopy1.

 BCP [Dinesh].[dbo].[Invoicescopy1] IN C:\av\Invoices.txt -S MC0XENTC -T -c 

Agradezco que esta sea una publicación anterior, pero puede ser útil que las personas sepan que el Asistente para la migración de Azure (disponible en Codeplex, que no puede enlazarse es como Codeplex en el momento en que estoy escribiendo esto) lo hará fácilmente.