Restaurar sólo datos específicos desde copias de seguridad SQL

Si alguna vez usted necesitó revertir rápidamente un cambio inadvertido como un UPDATE sin una cláusula WHERE, para recuperar los datos perdidos o corruptos, para mover los datos a través de su ambiente de desarrollo, pruebas, integración y producción o incluso sólo evitar generar un reporte usando una base de datos de SQL Server ocupada como fuente de datos, usted se ha debido preguntar si hay una manera fácil de restaurar sólo filas específicas en lugar de restaurar la copia de seguridad completa de la base de datos.

Afortunadamente, hay una manera de hacer justamente eso.

Para restaurar sólo datos específicos desde una copia de seguridad, haga lo siguiente:

  1. Restaure su copia de seguridad a una base de datos llamada de manera diferente que la base de datos de la que fue tomada la copia de seguridad para evitar cualquier conflicto.
  2. Inicie SQL Server Import and Export Wizard
  3. En el paso Choose a Data Source del asistente, especifique:
    • La instancia SQL donde reside la base de datos recientemente restaurada.
    • El método de autenticación para esa instancia SQL (y un conjunto válido de credenciales si elige la autenticación de SQL Server).
    • El nombre de la base de datos recientemente restaurada.
  4. Haga clic en el botón Next
  5. En el paso Choose a Destination del asistente, especifique:
    • La instancia SQL donde reside la base de datos que usted desea restaurar.
    • El método de autenticación para esa instancia SQL (y un conjunto válido de credenciales si usted elige la autenticación de SQL Server).
    • El nombre de la base de datos desea restaurar los datos.
  6. Haga clic en el botón Next
  7. En el paso Specify Table Copy or Query del asistente, seleccione la opción Write a query to specify the data to transfer
  8. Haga clic en el botón Next
  9. Provea la consulta que retornará las filas en cuestión y haga clic en el botón Next.
  10. En el paso Select Source Tables and Views del asistente, seleccione la tabla a la que los datos serán recuperados.
  11. Haga clic en el botón Edit Mappings
  12. En el diálogo Column Mappings que aparecerá:
    • Mapee las columnas retornadas por la consulta a las columnas de la tabla destino.
    • Seleccione la opción Append rows to the destination table.
    • Seleccione la opción Enable identity insert si lo necesita.
    • Haga clic en el botón OK.
  13. Haga clic en el botón Finish.
  14. En el paso Complete the Wizard del asistente, revise las acciones que se tomarán y haga clic en el botón Finish.
  15. Si desea restaurar datos a más de una tabla, repita el proceso entero, una vez por cada tabla.

Aunque los pasos listados anteriormente son mejores que tener que sobrescribir una base de datos existente e introducir un tiempo fuera de línea, y eso sin tomar en cuenta el peor escenario (también conocido como el escenario usual) – la base de datos ha cambiado desde que el último respaldo fue tomado o, en otras palabras, restaurar una copia de seguridad para obtener los datos perdidos significa que usted perderá los cambios válidos también – esta no es de ninguna manera una solución ideal – y en muchos casos no es una solución para nada.

Por ejemplo, ¿qué si usted necesita restaurar filas actualizadas cuya clave primaria no ha sido tocada? SQL Server tratará las filas originales como duplicados y la inserción fallará.

Y eso es sólo la punta de iceberg. A saber, el proceso entero es usualmente más lento que simplemente restaurar con WITH REPLACE, dado que usted no tiene que restaurar el archivo de la copia de seguridad (aunque a una base de datos diferente) y luego mover los datos reales, lo cual puede tomar hasta 2 veces más que la restauración en sí misma.

Aquí es donde ApexSQL Data Diff entra en escena.

ApexSQL Data Diff es una herramienta de comparación y sincronización de datos que detecta diferencias de datos y los resuelve sin errores. Puede comparar y sincronizar bases de datos en línea y copias de seguridad nativas o nativamente comprimidas y generar reportes exhaustivos acerca de las diferencias detectadas.

Para recuperar filas específicas desde copias de seguridad con ApexSQL Data Diff usted no necesita restaurarlas, simplemente realice los siguientes pasos:

  1. Inicie ApexSQL Data Diff
  2. Haga clic en el botón New en el diálogo 2. Haga clic en el botón New en el diálogo Project management.

    Project management dialog

  3. En el panel Source:
    • Seleccione Backup desde el menú desplegable Type.
    • Haga clic en Add file(s) y navegue a la carpeta donde reside el archivo de la copia de seguridad.
    • Seleccione la copia de seguridad y haga clic en Open.
  4. En el panel Destination:
    • Seleccione Database desde el menú desplegable Type.
    • Especifique la instancia SQL donde reside la base de datos que desea recuperar desde el menú desplegable Server.
    • Especifique el método de autenticación para esa instancia SQL (y un conjunto válido de credenciales si usted elige autenticación de SQL Server).
    • Especifique el nombre de la base de datos de la que desea recuperar los datos desde el menú desplegable Database.

      Select data source types and details

  5. Haga clic en el botón Compare.

  6. En la Cuadrícula principal, seleccione las tablas de la base de datos a las que se recuperarán los datos.
  7. En el panel Data difference, seleccione las filas a ser recuperadas.
  8. Haga clic en el botón Synchronize en la región Actions de la pestaña Home de la cinta.
  9. Haga clic en el botón Next en el paso Synchronization direction de Synchronization wizard.
  10. En el paso Output options del Synchronization wizard seleccione Synchronize a database.
  11. Haga clic en el botón Next.

    Synchronization wizard

  12. Revise el resumen de la sincronización y los avisos si hay alguno y haga clic en el botón Synchronize.

Y eso es literalmente todo.

Si usted desea restaurara sólo datos específicos y no perder tiempo en restauraciones largas, así como poder restaurar independientemente del escenario, ApexSQL Data Diff es la herramienta correcta para el trabajo.

Traductor: Daniel Calbimonte

diciembre 24, 2016