viernes, 21 de mayo de 2010

Restaurar una base de datos de SQL Server 2008 en un servidor SQL Server 2005

 

Quise restaurar una base de datos de un servidor SQL Server 2008 a un servidor SQL Server 2005 y me di cuenta de lo que suponía que no se puede, por lo menos no de una manera directa con Backup y Restore. Al modo, no me quede con las ganas ni con la duda, así que a investigar.

Lo tenemos que hacer con la opción de scripting, esa fue la forma que halle para resolver el problema. A continuación detallo el proceso.

 

Generar el Script

Ya una vez conectado al servidor, hacemos lo siguiente:

  1. Seleccionas la base de datos, le damos click derecho, task y generate scripts.
    • image
  2. La primer pantalla de bienvenida le damos siguiente.
  3. Seleccionamos la base de datos y marcamos la opción de Script all objects in the selected database.
    • image
  4. Ahora nos presenta una pantalla de opciones, vamos a seleccionar las mas importantes.
  5. Primero cambiamos la opcion Script for Server Version a SQL Server 2005.
    • image
  6. Ponemos la opción Script DataBase Create a verdadero si es una nueva base de datos.
  7. También ponemos la opción Script Data a verdedero.
  8. Existen otras opciones como de indices de texto completo y llaves primarias que configuraremos según sea el caso.
  9. Ya una vez que estamos contentos con nuestra configuración damos siguiente.
  10. En la opción de salida, le damos Script to file, le indicamos el archivo de salida y le damos siguiente.
    • image
  11. Por ultimo nos presenta una pantalla donde revisamos las opciones seleccionadas. Las analizamos y si todo esta bien le damos Finish.

Corregir el script

  1. Ya una vez que finalizó el proceso, revisamos el script. Hay que poner atención a lo siguiente:
    1. USE

      [master]

      GO

      /****** Object: Database [Ejemplo] Script Date: 05/21/2010 10:54:09 ******/

      CREATE

      DATABASE [Ejemplo] ON PRIMARY

      (

      NAME = N'ConacytWSData', FILENAME = N'D:\Archivos de programa\Microsoft SQL Server\MSSQL10.SQLSERVER2008\MSSQL\DATA\Ejemplo.mdf' , SIZE = 7168KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )

      LOG ON

      (

      NAME = N'ConacytWSData_log', FILENAME = N'D:\Archivos de programa\Microsoft SQL Server\MSSQL10.SQLSERVER2008\MSSQL\DATA\Ejemplo.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)

      GO

  2. Hay que notar que hace referencia a una unidad local, que talvez ni existe en el otro servidor, así que hay que modificarlo para que quede en el directorio de la instalación de nuestra instancia de SQL Server 2005.
  3. También hay que poner en comentario las siguientes líneas:
    1. --EXEC sys.sp_db_vardecimal_storage_format N'Ejemplo', N'ON'

      --GO

      USE

      [Ejemplo]

      GO

Ejecutar el script

Ahora nada más queda entrar a la instancia de SQL Server 2005 y correr el script…espero todo vaya bien…

salu2 y byte!!!

6 comentarios:

  1. Hola, he tenido un problema igual desde hace tiempo....Voy a probar y te cuento.

    Esto restaura la BD con toda la info?

    Gracias

    ResponderEliminar
  2. Hola q tal Giovanni, esto genera toda la BD con toda la información, espero te sirva

    ResponderEliminar
  3. Hola,

    Ya he probado y me funciono con una BD pequeña.
    Sin embargo con una BD grande de 255 tablas, 100 procedimiento y 20 vistas no me funciono, creo que por recursos del equipo donde lo hice.

    He notado que no me aparece esto cuando genero los scripts:
    CREATE

    DATABASE [Ejemplo] ON PRIMARY
    (

    NAME = N'ConacytWSData', FILENAME = N'D:\Archivos de programa\Microsoft SQL Server\MSSQL10.SQLSERVER2008\MSSQL\DATA\Ejemplo.mdf' , SIZE = 7168KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
    LOG ON
    (

    NAME = N'ConacytWSData_log', FILENAME = N'D:\Archivos de programa\Microsoft SQL Server\MSSQL10.SQLSERVER2008\MSSQL\DATA\Ejemplo.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
    GO



    En mi caso aparece el create table, create procedure e inmediatamente despues del create aparece el Insert into.

    Por que pasa esto?

    Mil gracias.

    ResponderEliminar
  4. Fíjate en el paso 6, hay que poner en verdadero la opción "Script DataBase Create", este es el que te poner el codigo para el create database..
    Espero que esto resuelva tu problema..
    Salu2

    ResponderEliminar
  5. Para mis problemas existà un utiliza. Este instrumento puede resolver mi situacion y otros problemas a mi todo de ver - como reparar archivos corruptos de sql server.

    ResponderEliminar
  6. EXCELENTE AMIGO A MI ME FUNCINÓ DE MARAVILLAS

    ResponderEliminar