martes, 5 de marzo de 2013

SQL Server 2008: Restaurar una base de datos Full+Diferencial.

A veces me da risa como las grandes compañias de software cobran tanto por su aplicacion, lees la documentacion tecnica y sigues paso a paso el manual, te muestran las opciones, estoy refiriendome a SQL Server 2008 restauracion de la base de datos.

Como decia, te explican las opciones de restauracion pero hasta ahi, no se meten mas a una forma de: asi se debe hacer.

Por que digo esto? Hoy me llamo una persona del departamento de Import-Export, ellos estan ya en fase de implementar un software llamado "Intrade", corre bajo SQL Server, y yo instale el server, version 2008 Estandard.

Entonces me llamo por que alguien de su equipo acceso a la configuracion del sistema ya que aun no tienen dados de alta los usuarios y todos estan usando el mismo que nos dieron cuando se instalo la 1ra vez y es admin o sea como root en Linux.

Entonces esta persona modifica y afecta cierta funcionalidad del sistema, claro esta que para estas alturas, los de soporte de Intrade ya no lo haran gratis, tendra un costo y al final ellos me contactaran a mi ya que ellos no tienen la menor idea de los respaldos.

Yo si :-), cuando se implemento el sistema lo primero que hice fue configurar los respaldos y probarlos, aqui implemente lo que hago con Bacula, Lunes Full, el resto diferencial de martes a sabado.

Si necesitara restaurar la BD, es tomar el ultimo Full+el ultimo diferencial, pero aqui sucedio algo chistoso, la persona lo modifico ayer Lunes durante el dia, entonces mi respaldo Full de ayer no sirve ya que la BD esta mal, no tiene sentido hoy restaurar lo de ayer, asi que tuve que sacar el Full de la semana pasada mas el ultimo diferencial de ese Full que fue el sabado.

Bien ya todo entendido, hice mi procedimiento:

1; Respaldo de la BD actual por aquello del no te entumas.
2; Borrar BD que deseamos restaurar.
3; Restaurar BD en base a un Full correcto(Lunes semana pasada).
4; Restaurar BD en base a el ultimo diferencial del Full seleccionado(Sabado).
5; Listo.

Pero o sorpresa en paso 4, se supone que el manual dice, seleccionas el respaldo diferencial deseado y dale, pero cuando le daba click a el boton OK, salia un error que dice mas o menos asi:

The log or differential backup cannot be restored because no files are ready to rollforward.

Que paso, lei el manual detenidamente y no di en cual era el motivo del error, que habia hecho mal?

Bien, no me preocupe, me fui con nuestro aliado google y encontre un doc que ya tiene tiempo pero ahi explicaban lo que Microsoft con todo su equipo tenico y manuales bonitos no logro hacerlo, este es el link, no me gusta saludar con sombrero ajeno:

http://justgeeks.blogspot.mx/2009/03/log-or-differential-backup-cannot-be.html

Lo que dice en pocas palabra es que cuando restauremos el Full nos vayamos a las opciones y selecciones la que dice:

Leave the database non-operational, and do not roll back uncommitted transactions. Additional transaction logs can be restored.(RESTORE WITH NORECOVERY)
 
De ahi, ahora si restauremos la diferencial con las opciones por default y listo.

Segui el proceso con esas sugerencias y listo, ya no arrojo ese maldito error, no fue una empresa que vale billones de dolares y tienen de los mejores tecnicos en BD la que me ayudo y me explico de una manera clara y objetiva como hacerlo, fue alguien como yo que vive esto dia a dia y sabe que la doc de esa gran empresa es un fiasco cuando en realidad te enfrentas a los problemas reales.

Los de Import-Export revisaron y si estaba la BD en el estado adecuado.

Saludos!!!

4 comentarios:

Héctor Bravo dijo...

Hola amigo.
Yo tenía entendido que para restaurar full+diferencial, debes restaurar primero el full y luego los diferenciales en el mismo orden, por ejemplo en tu caso primero el full del lunes y si necesitas la info del jueves, continuas restaurando con diferencial de martes, luego restauras miercoles y jueves.

Corrigeme si estoy mal, saludos!

Pedro Moreno dijo...

La diferencia del "Diferencial" y el
"Incremental" es que este ultimo saca el respaldo del ultimo respaldo, o sea si corristes un incremental ayer, y hoy corres un incremental, este ultimo respalda lo que cambio del respaldo de ayer que fue incremental o full no importa el se basa en el ultimo. El diferencial se basa en el ultimo Full, por ello cuando restauras un backup usando el metodo full+diferencial, solo requieres 2 respaldos, el ultimo Full y el diferencial que quieras y listo, saludos.

Anónimo dijo...

Que buen aporte gracias, me sirvio bastante

Pedro Moreno dijo...

De nada, saludos.