2009-11-16 34 views
5

Tengo que mover una base de datos completa de una máquina de SQL Server 2008 a una máquina de SQL Server 2000.Restaurar la base de datos de SQL Server 2008 a SQL Server 2000

Creé una copia de seguridad usando Management Studio 2008, la copié en el disco duro de la caja 2000 y de Management Studio 2008 elijo Restaurar base de datos en la caja 2000.

Aparece un mensaje de error que dice "La familia de medios en el dispositivo ... está formada incorrectamente. SQL Server no puede restaurar esta familia de medios".

Si uso Enterprise Manager 2000 aparece el mismo error.

¿Hay alguna manera de mover una base de datos completa del servidor SQL más nuevo al anterior?

Respuesta

10

Lo único que se me ocurre es recrear toda la estructura y luego copiar los datos de una base de datos en vivo. Por lo tanto, cree scripts que crearán las tablas, vistas y sp's, y luego crear scripts para copiar los datos de la base de datos existente.

+1

Acabo de terminar de hacer esto yo mismo. La única forma que encontré para hacerlo fue crear una secuencia de comandos para toda la base de datos (incluidos los datos) y ejecutar la secuencia de comandos en la máquina de destino. Ahora, esto es un dolor, porque el 2008 DB puede crear un script que no se ejecutará en 2000 (bueno, el mío lo hizo) por lo que tendrá que editar el script generado antes de ejecutarlo en el año 2000. Almacene Tylenol antes de comenzar. Buena suerte. – BoltBait

+4

Sí, esa es la única manera de hacerlo. SQL Server nunca ha sido compatible con versiones anteriores, p. nunca ha podido restaurar una versión más nueva a un servidor anterior. No creo que esto vaya a cambiar –

0

He oído que solo puede hacerlo generando el volcado de la declaración de SQL desde la herramienta de administrador de DB y volviendo a ejecutar esas consultas en la base de datos antigua de destino.

+1

Por supuesto, tendrás que manipularlos manualmente ya que la herramienta de secuencia de comandos pone cosas que 2000 no reconocerá. – HLGEM

1

no puede mover las copias de seguridad de una versión más reciente de una más antigua, en ese caso usted puede script su base de datos, ejecutarlo en el cuadro de 2000, a continuación, puede utilizar la transferencia de datos estándar para transferir los datos que desee

0

Puede generar un script que recree todos los objetos y transfiera todos los datos ... siempre que todo en el db sea válido en SQL 2000. Entonces no ROW_NUMBER(), no PARTITION, no CTEs, no datetime2, hierarchy o varios otros tipos de campo, no EJECUTAR COMO, y muchas otras bondades. Básicamente, hay muchas posibilidades de que no sea posible a menos que tu base de datos sea bastante básica.

1

Si tiene una conexión de red entre las máquinas, use SSIS. Mucho más fácil y mucho menos jugando.

1

Se puede utilizar un generador de scripts para su base de datos y luego seleccione en las propiedades del formulario: General-> Script para la versión servidor: SQL Server 2000.

El generador de secuencia de comandos que hará saber las cosas que no sean compatibles con su versión del servidor .

2

Como otros ya han dicho, no hay una forma predeterminada de hacerlo. Simplemente no es compatible. Aquí hay detalles más extensos sobre cómo hacer esto correctamente y evitar cualquier problema de migración.

Necesita generar scripts para la estructura y los datos y luego ejecutarlos en SQL 2000 (como ya se dijo), pero hay dos cosas que se deben tener en cuenta.

generar secuencias de comandos en SSMS

  • Asegúrese de comprobar la opción para los datos de secuencias de comandos SQL para 2000 para evitar problemas cuando se trata de crear algo así como la columna Tipo de la geografía en SQL 2000.
  • Asegúrese de revisar la orden de ejecución de secuencias de comandos para evitar errores de base de dependencia

Esta es una gran opción para las pequeñas y medianas bases de datos de tamaño y requiere algo de conocimiento de SQL Server (dependencias, las diferencias entre las versiones y tal)

herramientas de terceros

  • idea es utilizar terceros herramientas de comparación de bases de datos tales como ApexSQL Diff o Data Diff
  • parte buena es que éstas se hará cargo de la ejecución del script y las diferencias entre las versiones
  • No tan bueno es el hecho de que tendrá que pagar por estos después de que termine la prueba
  • He usado estas dos herramientas con éxito, pero no se puede equivocar con ninguna otra herramienta en el mercado. Here es una lista de otras herramientas en esta categoría.
0

Tenemos una situación similar. Una muy baja tecnología, pero solución práctica es:

  1. copia de seguridad y truncar las tablas en SQL 2000.
  2. crear un servidor vinculado en SQL 2008, que apunta a SQL 2000
  3. ejecutar una consulta de selección en sysobjects a generar un script de consulta para insert into LINKED SERVER.table select * from table
  4. ejecutar el script de consulta.
Cuestiones relacionadas