Cómo recuperar sólo filas individuales de copias de seguridad

“Borré/actualicé registros importantes por error en una tabla de SQL Server. ¿Hay alguna forma de recuperar esto registros?”

Esta es una pregunta frecuente, y muy a menudo un dolor de cabeza para los Administradores de Bases de Datos. SI ellos son cuidadosos y hacen copias de seguridad de la base de datos regularmente, ellos pueden recuperar los datos perdidos de la base de datos incluso donde el modelo de recuperación SIMPLE es usado.

SI ese es el caso, entonces las copias de seguridad de la base de datos son la única solución para recuperar los datos perdidos de la base de datos. Los datos eliminados tienen que ser de un periodo previo a la creación de la copia de seguridad de la base de datos.

Así que, ¿cómo recuperar los datos perdidos de la base de datos?

Restaurar la copia de seguridad de la base de datos y usarla en lugar de la base de datos original funcionaría bien si nosotros no tuviéramos ningún cambio de datos después de la creación de la última copia de seguridad de la base de datos.
Probablemente, la mejor solución sería:

  1. Restaurar la copia de seguridad en el mismo servidor de la base de datos original usando un nombre diferente
  2. Localizar las filas relevantes en la base de datos recuperada
  3. Actualizar las filas rotas usando las de la base de datos recuperada

SQL Server no ofrece formas “limpias y fáciles” de hacer esto. Usted puede intentar tales soluciones como:

  • Usar el asistente de importar/exportar de SSMS
  • Usar sentencias MERGE
  • Escribir consultas directas para insertar o actualizar datos
  • Pero demandan mucho tiempo, requieren mucho trabajo y, sobre todo, estos procesos son proclives a errores. En tales situaciones, la mejor alternativa sería una herramienta de comparación SQL segura y rápida, capaz de comparar y sincronizar datos de la base de datos.

    ApexSQL Data Diff es una herramienta de comparación SQL que permite comparar y sincronizar datos de tabla o vista para bases de datos y copias de seguridad de bases de datos.

    La recuperación de filas individuales de una base de datos puede ser realizada en unos poco y fáciles pasos:

    1. Inicie ApexSQL Data Diff
    2. En el diálogo Project management haga clic en New
    3. Para seleccionar las copias de seguridad de bases de datos como fuente de los datos:
      • En el menú desplegable source seleccione Backup
      • Haga clic en Add file(s) para cargar las copias de seguridad de bases de datos en la lista Backup sets
      • Seleccione la copia o copias de seguridad que necesitan ser usadas
    4. Para seleccionar una base de datos como destino de los datos
      • En el menú desplegable destination, seleccione Database
      • Conéctese a SQL Server
      • Seleccione la base de datos

      ApexSQL Data Diff ofrece opciones útiles, incluyendo una de las más poderosas – Object filter

    5. Haga clic en Show advanced tabs y seleccione Object filter
    6. En la lista de objetos en el diálogo Project, excluya objetos individuales de la comparación des-seleccionándolos
    7. Adicionalmente, es posible establecer un filtro más avanzado y granular
      • Haga clic en Edit filter para escoger las columnas específicas
      • Seleccione las columnas para analizar y comparar seleccionando un objeto específico y abriendo el menú desplegable en Columns.
      • Seleccione aquellas columnas que necesitan ser incluidas en el análisis
    8. Haga clic en Compare

    Los objetos analizados y los resultados de las diferencias serán listados en la cuadrícula de resultados de la aplicación. Mostrará cada objeto comparado junto con información básica acerca del número de diferencias entre dos objetos. Para seleccionar qué debería ser sincronizado:

    1. Escoja los objetos para la sincronización
    2. Seleccione filas individuales para la sincronización. Seleccione esas filas en el panel de detalles de diferencias, abajo en la pantalla principal

    Una vez que el proyecto está configurado y los objetos para la sincronización están seleccionados, inicie el asistente de sincronización. Durante el proceso de sincronización, Output options le ofrece una elección acerca de si ejecutar automáticamente el script de sincronización, abrir el script generado en un editor, o grabar el script a un archivo.

    EL paso Summary and warnings provee una lista detallada de acciones que serán tomadas para sincronizar las fuentes de datos junto con cualquier problema potencial que podría ocurrir durante la sincronización.

    Después de una sincronización exitosa, la recuperación de la base de datos perdida es completada.

    SI usted eliminó/actualizó registros importantes por accidente y sus copias de seguridad de la base de datos tienen los datos perdidos, entonces ApexSQL Data Diff es una solución segura y rápida, capaz de resolver este problema sin interrumpir su trabajo.

    Traductor: Daniel Calbimonte

    junio 12, 2015