Recuperar datos perdidos debido a operaciones TRUNCATE sin copias de seguridad

Si usted accidentalmente ejecutó una sentencia TRUNCATE y tiene una copia de seguridad completa de la base de datos, dado que ningún cambio ocurrió después de que la tabla fue truncada, usted simplemente puede recuperar los datos sobrescribiendo la base de datos original con la copia de seguridad. Sin embargo, si ese no es el caso, ya sea porque los objetos de la base de datos y los datos han sido cambiados después de que la sentencia SQL TRUNCATE.

A saber, SQL Server registra cada operación TRUNCATE, aunque mínimamente. Esto significa que, justamente como cuando una sentencia DELETE es ejecutada, el registro de transacciones almacena la información que es requerida para recuperar la transacción; la diferencia es que el registro de transacciones no almacena información de cada fila individual que ha sido truncada y por tanto no soporta una recuperación a un punto de tiempo desde TRUNCATE.

Dado que TRUNCATE está registrado en el registro, puede ser retrotraído si está encapsulado dentro de una transacción explícita y activa. Por ejemplo, la siguiente consulta SQL:

TRUNCATE TABLE Employee
SELECT *
FROM Employee

Retornará 0 resultados ya que Employee será truncada. De todas maneras, el siguiente código SQL:

BEGIN TRAN
TRUNCATE TABLE Employee

ROLLBACK

SELECT *
FROM Employee

Retornará todas las filas en la tabla Employee ya que la operación TRUNCATE será retrotraída.

Sin embargo, si la transacción que contiene la operación TRUNCATE ya no está activa, por ejemplo si ha sido aplicada, los datos truncados no pueden ser retrotraídos. ¿Significa eso que usted no puede recuperar los datos perdidos debido a una operación TRUNCATE si no hay copias de seguridad de la base de datos disponibles?

Afortunadamente, no. Aquí es donde entra ApexSQL Recover.

ApexSQL Recover es una herramienta de recuperación para bases de datos SQL Server que recupera datos eliminados, truncados o dañados. La herramienta recupera objetos y datos perdidos debido a operaciones de eliminación y restaura los BLOBs tanto en línea como eliminados como archivos, haciéndola ideal para recuperaciones de SharePoint.

Recovery options in ApexSQL Recover

Para recuperar datos perdidos a un TRUNCATE sin copias de seguridad:

  1. Inicie ApexSQL Recover
  2. Selecciones la opción Data recovery-From TRUNCATE operation option
    • En el paso Select the database to recover: Especifique la instancia SQL donde reside la base de datos de la cual quiere recuperar los datos desde el menú desplegable Server.
    • Especifique el método de autenticación para la 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 que contiene la tabla truncada en el menú desplegable Database y haga clic en Next.

  3. En el paso Select the table(s) to recover, seleccione las tablas que han sido truncadas.

  4. En el paso Select a recovery option, seleccione la opción Save the recovery script to a file y especifique la ruta donde un script T-SQL insertará todos los datos perdidos cuando se ejecute.

  5. Haga clic en el botón Recover.

Y simplemente así, usted obtendrá sus datos perdidos sin tener ni una sola copia de seguridad.

Traductor: Daniel Calbimonte

octubre 27, 2015