Cómo recuperar datos de SQL Server de operaciones UPDATE y DELETE accidentales

La peor pesadilla de un Administrador de Bases de Datos SQL es la pérdida de datos debido a su propio error. No es poco común que alguien ejecute indebidamente o incluso olvide la cláusula WHERE completamente cuando ejecuta consultas DELETE o UPDATE, resultando en datos comprometidos de potencialmente millones de filas.

Así que, ¿qué opciones de recuperación de datos en SQL Server están disponibles?

La solución podría ser usar una copia de seguridad que fue hecha justo antes del desastre.

Las soluciones comunes para recuperar datos de bases de datos usando la copia de seguridad existente son:

  1. Restaurar la copia de seguridad de la base de datos y usarla en lugar de la base de datos original.
  2. De otra forma:
    • Restaurar la copia de seguridad en el mismo servidor que la base de datos original usando un nombre de base de datos diferente.
    • Localizar las filas relevantes en la base de datos recuperada
    • Actualizar las filas rotas usando las filas originales de la base de datos recuperada

Desafortunadamente, raramente el escenario de recuperación es tan “pulcro y limpio” como para permitir una solución tan simple.

Un escenario más probable:

  • Los errores no fueron detectados a tiempo
  • Hubieron cambios de datos subsecuentes entre la creación de la copia de seguridad de la base de datos y la ejecución de la consulta que complicaron la recuperación significativamente.
  • Afluencia de nuevos datos
  • Las copia de seguridad de la base de datos no fueron hecho con suficiente regularidad, o no se hicieron

Una salida a sus problemas

Leer información de registros de transacciones en línea, copias de seguridad de registros de transacciones o registros de transacciones sueltos, para recuperar datos de una base de datos, es una opción para recuperar datos.

ApexSQL Log es una herramienta de recuperación de SQL Server capaz de leer datos de registros de transacciones y recuperar datos perdidos de bases de datos retrocediendo las transacciones a su estado original.

Para recuperar datos perdidos de bases de datos debido a operaciones accidentales de UPDATE o DELETE usando ApexSQL Log:

  1. Iniciar ApexSQL Log
  2. Conectarse a la base de datos
  3. En el paso Select SQL logs to analyze, añada las copias de seguridad del registro de transacciones y los registros de transacciones sueltos que desea leer. Note que deben formar una cadena completa para proveer una auditoría exitosa. Añadir una copia de seguridad de base de datos puede ayudar a incrementar el desempeño y la calidad de datos de la auditoría.

  4. Usar las opciones de Filter Setup para reducir el conjunto de resultados usando el tiempo, tipo de operación, nombre de la tabla, usuario y otras opciones de filtrado.

  • Después de haber establecido todas las opciones, haga clic en Open.

Sus transacciones serán listadas en la cuadrícula principal de la aplicación. Usted aún puede usar Filter en el panel izquierdo para adicionalmente eliminar transacciones no necesitadas.

Para realizar una recuperación de datos, registre las transacciones que desea retroceder y haga clic en Create undo script en la pestaña Actions.

Para ejecutar el script desde el editor de scripts, haga clic en el botón Execute o presione F5 y los datos perdidos serán restaurados en la base de datos.

Así que recuerde, si usted usó DELETE/UPDATE por accidente, aún puede recuperar los datos perdidos de la base de datos, en muchos casos, con ApexSQL Log.

Traductor: Daniel Calbimonte

Diciembre 5, 2014