jueves, 25 de noviembre de 2010

Pérdida de datos en SQL Server

Si por error has perdido ciertos datos en tu base de datos SQL Server, ya sean registros o tablas completas, y el último backup que tienes es demasiado viejo y no contiene los datos que necesitas recuperar, existe una manera para poder recuperar tu información por completo.

Una vez que se ha realizado un commit sobre las transacciones en una base de datos, no puedes ejecutar un rollback para deshacer esta operación; así que necesitarás de algún backup para recuperar tu información. Si tienes un backup lo suficiente nuevo como para restaurar tus datos, pues no tendrás ningún problema, pero si no lo tienes aún asi puedes recuperarlos siguiendo estos pasos:

1. Realiza un backup de transacciones de tu base de datos. Entra al SQL Server Enterprise Manager y sobre tu base de datos presiona el botón derecho. Selecciona la opción Todas las tareas y luego Copia de seguridad de la base de datos....


En la ventana de copia de seguridad selecciona la opción Registro de transacciones e indica el lugar donde deseas que se almacene este backup y asignale una extensión trn.


2. Restaura el backup más nuevo que tengas. Busca el backup más nuevo que tengas y restauralo preferiblemente en otro servidor. Si no cuentas con otro servidor, puedes restaurarlo en una nueva base de datos pero asegurate de cambiar el nombre del archivo físico donde será restaurado para no sobreescribir la base de datos original. Esta restauración se debe realizar con ciertos parámetros especiales. Si la restauración se realizará a través de código utiliza la siguiente sintaxis:

RESTORE DATABASE NuevaBD
FROM DISK = 'C:\Backups\ultimoBackup.bak'
WITH
MOVE 'BDPrevia' TO 'C:\Data\NuevaBD.mdf',
MOVE 'BDPrevia_Log' TO 'C:\Data\NuevaBD_Log.ldf',
NORECOVERY

Las sentencias MOVE sirven para indicar adonde se ubicarán físicamente los archivos lógicos de la base de datos. Esto es lo que nos evitará sobreescribir la base de datos ya existente.

NORECOVERY lo utilizamos para indicarle que sobre esta Base de Datos restauraremos un archivo de transacciones, por lo que la base de datos no quedará operativa sino hasta después de realizar esta restauración donde le indicaremos que lo haga con RECOVERY.

Si la restauración de la base de datos la haremos a través de la interfaz gráfica hay que asegurarse de cambiar el nombre del archivo físico del archivo mdf y del archivo ldf e indicarle que la base de datos quedará no operativa tal como se indica en la siguiente figura:


Si se utiliza la versión Studio Express del SQL Server Management, estos mismos parámetros pueden ser configurados en la ventana de restauración en la ficha "Options".

Si no tienes ningún backup no podrás realizar la recuperación de tus datos, o por lo menos no conozco ninguna forma, si lográs hacerlo por favor comentalo en este post :)


3. Restaura el archivo de transacciones. El último paso es restaurar el archivo de transacciones especificando la fecha anterior a la pérdida de los datos; es decir, que si perdimos los datos el 15 de noviembre de 2010 a la 1 p.m., podemos indicarle que restaure las transacciones hasta cualquier fecha antes de esta en la cual estemos seguros que estaban todos los datos que necesitamos antes de ser borrados. A través de código se utilizaría una sintaxis como esta:

RESTORE LOG BDNueva
FROM DISK = 'C:\Backups\transacciones.trn'
WITH
STOPAT=N'11/15/2010 8:00:00 AM',
RECOVERY

A través de la interfaz gráfica en la versión Studio Express presiona el botón derecho sobre la base de datos (la cual indicará que está en estado de Restauración) y selecciona Tasks, luego Restore y luego Transaction Log... Después debes indicarle que la base de datos debe quedar operativa e indicarle el punto en el tiempo hasta el que quieres restaurar las transacciones.

Listo, con esto tendrás tus datos en BDNueva y podrás sacar de ella lo que necesites. Básicamente lo que este proceso realiza es restaurar una base de datos vieja y luego ejecutar de nuevo las transacciones que se realizaron hasta cierta fecha, generando así nuevamente los datos que necesitamos.

No hay comentarios:

Publicar un comentario