Cómo recuperar datos de SQL Server de actualizaciones accidentales sin copias de seguridad

¡Ups! Digamos que usted realizó una declaración UPDATE sin una condición WHERE en la base de datos y sobrescribió un puñado de filas con malos datos. ¿Cómo puede recuperar los valores correctos?

Si usted previamente creó una copia de seguridad que contenía los valores originales de la tabla, podría recuperar fácilmente los datos. Las soluciones más comunes son:

  • Restaurar la copia de seguridad de la base de datos y usarla en lugar de la base de datos original
  • En caso de que algunos otros cambios ocurrieran después del UPDATE o no puede permitir a la base de datos no estar en línea:
    1. Restaurar la copia de seguridad de la base de datos en un servidor de prueba
    2. Usar SQL Server Management Studio Export data para exportar los datos
    3. Importar los datos exportados en la base de datos original

Pero si usted no hizo una copia de seguridad completa de la base de datos, los UPDATEs aún se pueden retrotraer usando información de las transacciones almacenadas en el registro de transacciones de la base de datos en línea.

El registro de transacciones guarda información acerca de las transacciones hechas a su base de datos. Si no ha sido comprimido o truncado, usted puede usar ApexSQL Log.

ApexSQL Log es una herramienta que puede explorar el registro de transacciones de la base de datos y retrotraer los UPDATEs accidentales. Así que en lugar de tener todos los datos en la tabla actualizada, usted puede retrotraer la declaración UPDATE y actualizar sólo los datos para cumplir con un cierto criterio.

Para recuperar datos de UPDATEs accidentales usando ApexSQL Log:

  1. Inicie ApexSQL Log

  2. Conéctese a la base de datos

  3. Use la sección Time range en las opciones Filter setup para reducir el tiempo de recuperación cuando la declaración UPDATE fue ejecutada

  4. Seleccione Update row en el pase de Filter setup options, pestaña Operations

  5. Seleccione la(s) tabla(s) donde los datos fueron actualizados en el paso Filter setup options, filtro Tables

  6. Si es posible, use los filtros Users y Applications para reducir los resultados
  7. Haga clic en Open
  8. Para crear el script para Deshacer:
    1. Haga clic en Create undo script en la pestaña Home en el grupo Actions para crear el script Deshacer para todas las transacciones mostradas en la cuadrícula.

    2. Seleccione las transacciones para las que desea crear para el script Deshacer, haga clic derecho en la cuadrícula Main y haga clic en Create undo script en el menú contextual para crear el script Deshacer sólo para las transacciones seleccionadas
  9. Ejecute el script contra la base de datos

Después de que el script Deshacer es ejecutado, los UPDATEs son retrotraídos y los datos originales están de vuelta en la base de datos antes de que fuera dañada.

Si usted hace un UPDATE accidentalmente en entradas de la base de datos y no tiene una copia de seguridad completa de la base de datos, hay una posibilidad de recuperarlos usando ApexSQL Log.

Traductor: Daniel Calbimonte

Diciembre 5, 2014