Implementar esquema de backups

26/02/2004 - 15:55 por Guillermo | Informe spam
Tengo el siguiente problema;
una base de datos, en la que tengo que tener el siguiente esquema de
backups:
en una fecha determinada (podría ser el primero de cada mes), hago un backup
full y a partir de este, un backup incremental hasta el proximo backup full.
Esto se repite todos los meses por igual.

El primer problema que tengo, es que la fecha para el Full, no va a ser
siempre la misma. Un mes puede ser el día 1 y al me siguiente puede ser el
día 10. Esto depende de un proceso de cierre que hace en la empresa.
Esto me genera la primera duda:
1. El backup diferencial depende siempre de un bckup full, entonces, que
pasa con el bakcup diferencial que se estaba haciendo al momento de hacer el
proximo full.
Quiero decir, ¿cuando el hago un Full, el diferencial que se venía haciendo
se pierde o empieza de nuevo?

Mi idea para implementar esto, es desde una aplicación Visual Basic, darle
la opción al usuario, para que dispare el backup. Esto haría el Full y a
continuación el diferencial. Previo, copiaría el diferencial anterior para
no perderlo.

La pregunta es si esto que estoy pensando sirve o si no va a funcionar.
¿Cómo hago para asegurarme de que el diferencial que estoy haciendo empiece
a partir de este último full?
¿Cómo hago para dejar programado el diferencial, con sentencias de
Transact-SQL?
¿Tengo que parar la programación del diferencial anterior, o se cancela solo
a partir de este nuevo?

Espero no estar preguntando muchas pavadas, y haber sido claro en mi
problema.

Preguntas similare

Leer las respuestas

#1 Maximiliano D. A.
26/02/2004 - 16:40 | Informe spam
Hola Guillermo, el Backup diferencial es la copia desde el ultimo FULL o sea
se reinicia cuando haces un nuevo FULL digamos.

Ahora yo aplicaria quizas otra politica de Backup por ej:

Full una vez por semana
Transaction Log una vez por hora (esto dependera de otras cosas)
Diferencial una vez por dia

Ahora me imagino que tu sistema de recuperacion es Completo verdad?

Ademas puedes usar los asistentes para Backup del Admin Coorporativo donde
paso a paso iras armando el Backup y lo programas y todo.

Bye


Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Guillermo" escribió en el mensaje
news:Ok3BthH$
Tengo el siguiente problema;
una base de datos, en la que tengo que tener el siguiente esquema de
backups:
en una fecha determinada (podría ser el primero de cada mes), hago un


backup
full y a partir de este, un backup incremental hasta el proximo backup


full.
Esto se repite todos los meses por igual.

El primer problema que tengo, es que la fecha para el Full, no va a ser
siempre la misma. Un mes puede ser el día 1 y al me siguiente puede ser el
día 10. Esto depende de un proceso de cierre que hace en la empresa.
Esto me genera la primera duda:
1. El backup diferencial depende siempre de un bckup full, entonces, que
pasa con el bakcup diferencial que se estaba haciendo al momento de hacer


el
proximo full.
Quiero decir, ¿cuando el hago un Full, el diferencial que se venía


haciendo
se pierde o empieza de nuevo?

Mi idea para implementar esto, es desde una aplicación Visual Basic, darle
la opción al usuario, para que dispare el backup. Esto haría el Full y a
continuación el diferencial. Previo, copiaría el diferencial anterior para
no perderlo.

La pregunta es si esto que estoy pensando sirve o si no va a funcionar.
¿Cómo hago para asegurarme de que el diferencial que estoy haciendo


empiece
a partir de este último full?
¿Cómo hago para dejar programado el diferencial, con sentencias de
Transact-SQL?
¿Tengo que parar la programación del diferencial anterior, o se cancela


solo
a partir de este nuevo?

Espero no estar preguntando muchas pavadas, y haber sido claro en mi
problema.









Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 22/02/2004
Respuesta Responder a este mensaje
#2 Diego Uribe
26/02/2004 - 18:25 | Informe spam
El siguiente procedimiento lo creas en "master" y luego lo colocas a
ejecutarse periodicamente en "Tareas programadas"
recuerda colocarle el "path" donde quedará guardado el backup.

Si quieres meterle todavia más "TIZA" o más complique lo que haces es que
utilizas los procedimientos extendidos y ejecutas un pkzip, arj, rar que
comprima el archivo recien generado y luego borras el original. Y
adicionalmente lo puedes copiar en un pc en red. etc

Saludos

Diego

/* LA FORMA DE LLAMARLO: */
/* EXEC Procedure_Backup 'd:\temp\' */


CREATE PROCEDURE Procedure_Backup
@Path varchar(255)
AS BEGIN
DECLARE @i INT;
DECLARE @tmp varchar(500);
DECLARE @pth varchar(50);
DECLARE @bd varchar(50);
DECLARE @cont int;
DECLARE @max int;
Set @cont=1
Select @max=count(*) From sysdatabases Where dbid >= 5;
DECLARE bd_cur CURSOR FOR Select sysdatabases.name From sysdatabases Where
dbid >= 5;
OPEN bd_cur;
FETCH NEXT FROM bd_cur INTO @bd;
WHILE ( @cont <= @max ) BEGIN
Set @pth = @path + @bd;
Set @tmp = 'Copia de seguridad ' + @bd + Cast(GetDate() as varchar)
/*Crea el Backup*/
BACKUP DATABASE @bd TO DISK = @pth WITH INIT, NOUNLOAD, NAME = @tmp, SKIP,
STATS = 10, NOFORMAT;
/*Crea el SQL para verificar el Backup*/
select @i = position from msdb..backupset
where database_name=@bd and
type!='F' and
backup_set_id= (
select max(backup_set_id)
from msdb..backupset
where database_name=@bd
);
/*Verifica el Backup */
RESTORE VERIFYONLY FROM DISK = @pth WITH FILE = @i;
/*Continua el Ciclo*/
Set @cont = ( @cont + 1 );
FETCH NEXT FROM bd_cur INTO @bd;
End;
CLOSE bd_cur;
DEALLOCATE bd_cur;
END;
Respuesta Responder a este mensaje
#3 Guillermo
26/02/2004 - 18:26 | Informe spam
Gracias por responder Maxi,
El tema es que el backup full, se tiene que hacer una vez terminado un
proceso que se hace desde una aplicación.
Por eso decía de hacerlo desde otra aplicacion, donde el usuario, al
finalizar este proceso de cierre, hace un backup full y de ahi los
diferenciales.

Esta gente quiere tener la posibilidad de volver para atras la base de
datos, al comienzo de un periodo determinado.
Por eso el backup full a ese momento.
Ademas quiere tener la posibilidad dentro de un periodo, de volver a un día
en particular. Por esto último es que pensaba en los backup diferenciales
entre cierre y cierre.

Mis dudas son porque no se hasta donde, podré recuperar luego los
diferenciales.
Me imagino, que si antes de hacer el full, copio el diferencial que tengo
hasta ese momento para no perder los datos que hay dentro, y luego lo quiero
usar para volver la base a uno de los días del mes, necesitaré restaurar
primero el anterior full y luego dentro del fierencial, el correspondiente
al día que necesito
¿Estoy diciendo bien?

Por otro lado, no se como programar el diferencial usando t-sql, que el lo
que tendría que hacer despues del full para tener el diferencial de todos
los días





"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en el
mensaje news:%23KRQW9H$
Hola Guillermo, el Backup diferencial es la copia desde el ultimo FULL o


sea
se reinicia cuando haces un nuevo FULL digamos.

Ahora yo aplicaria quizas otra politica de Backup por ej:

Full una vez por semana
Transaction Log una vez por hora (esto dependera de otras cosas)
Diferencial una vez por dia

Ahora me imagino que tu sistema de recuperacion es Completo verdad?

Ademas puedes usar los asistentes para Backup del Admin Coorporativo donde
paso a paso iras armando el Backup y lo programas y todo.

Bye


Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Guillermo" escribió en el mensaje
news:Ok3BthH$
> Tengo el siguiente problema;
> una base de datos, en la que tengo que tener el siguiente esquema de
> backups:
> en una fecha determinada (podría ser el primero de cada mes), hago un
backup
> full y a partir de este, un backup incremental hasta el proximo backup
full.
> Esto se repite todos los meses por igual.
>
> El primer problema que tengo, es que la fecha para el Full, no va a ser
> siempre la misma. Un mes puede ser el día 1 y al me siguiente puede ser


el
> día 10. Esto depende de un proceso de cierre que hace en la empresa.
> Esto me genera la primera duda:
> 1. El backup diferencial depende siempre de un bckup full, entonces, que
> pasa con el bakcup diferencial que se estaba haciendo al momento de


hacer
el
> proximo full.
> Quiero decir, ¿cuando el hago un Full, el diferencial que se venía
haciendo
> se pierde o empieza de nuevo?
>
> Mi idea para implementar esto, es desde una aplicación Visual Basic,


darle
> la opción al usuario, para que dispare el backup. Esto haría el Full y a
> continuación el diferencial. Previo, copiaría el diferencial anterior


para
> no perderlo.
>
> La pregunta es si esto que estoy pensando sirve o si no va a funcionar.
> ¿Cómo hago para asegurarme de que el diferencial que estoy haciendo
empiece
> a partir de este último full?
> ¿Cómo hago para dejar programado el diferencial, con sentencias de
> Transact-SQL?
> ¿Tengo que parar la programación del diferencial anterior, o se cancela
solo
> a partir de este nuevo?
>
> Espero no estar preguntando muchas pavadas, y haber sido claro en mi
> problema.
>
>
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 22/02/2004


Respuesta Responder a este mensaje
#4 Maximiliano D. A.
26/02/2004 - 19:33 | Informe spam
Estimado!!

Creo que estas encarando la cosa un poco mal, perdoname que te lo diga no.

Si alguien corre un proceso y quiere la Base antes y despues de ese proceso,
haciendo el backup del Log correctamente tenes eso solucionado, no veo la
necesidad de que hagas un FULL cada vez que haces ese proceso, pero si de
todas formas queres hacer lo podes hacer sin problema, claro quizas debas
administrar algun archivo de Backup incremental de ese FULL.

No se cuanto pesa tu BDD (Seria un dato interesante que me digas)

Pero si armas el Full por semana y luego por hora un log y por dia un
diferencial podrias hacer lo siguiente luego:

Suponete que el dia miercoles se pincho la Base a las 14:00Hs, supongamos
que se prendio todo fuego bien drastico.

Bien ahora vamos a empezar a restaurar,

Si el full es el Domingo entonces:

1) Restauro el Full
2) Restauro el ultimo Diferencial (Dia martes)
3) Empiezo a restaurar los Logs hasta la hora indicada.

Creo que asi deberias pensar la cosa mas o menos, si el proceso empezo
suponete a las 13:hs de un dia X vos sabes que si algo pasa podes restaurar
los Logs hasta antes de Esa hora y tenes la Base como nuevita digamos.

Para armar todo esto te aconsejo el uso del Asistente como te dije antes
pero si lo queres programar deberias de por ejemplo armarte un Store que
haga el Backup y luego lo mandas como Job con el siguiente Store (Revisa
bien en tu manual si?)

Sp_add_job y
Sp_add_jobschedule

Bye


Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Guillermo" escribió en el mensaje
news:O8WPG2I$
Gracias por responder Maxi,
El tema es que el backup full, se tiene que hacer una vez terminado un
proceso que se hace desde una aplicación.
Por eso decía de hacerlo desde otra aplicacion, donde el usuario, al
finalizar este proceso de cierre, hace un backup full y de ahi los
diferenciales.

Esta gente quiere tener la posibilidad de volver para atras la base de
datos, al comienzo de un periodo determinado.
Por eso el backup full a ese momento.
Ademas quiere tener la posibilidad dentro de un periodo, de volver a un


día
en particular. Por esto último es que pensaba en los backup diferenciales
entre cierre y cierre.

Mis dudas son porque no se hasta donde, podré recuperar luego los
diferenciales.
Me imagino, que si antes de hacer el full, copio el diferencial que tengo
hasta ese momento para no perder los datos que hay dentro, y luego lo


quiero
usar para volver la base a uno de los días del mes, necesitaré restaurar
primero el anterior full y luego dentro del fierencial, el correspondiente
al día que necesito
¿Estoy diciendo bien?

Por otro lado, no se como programar el diferencial usando t-sql, que el lo
que tendría que hacer despues del full para tener el diferencial de todos
los días





"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en el
mensaje news:%23KRQW9H$
> Hola Guillermo, el Backup diferencial es la copia desde el ultimo FULL o
sea
> se reinicia cuando haces un nuevo FULL digamos.
>
> Ahora yo aplicaria quizas otra politica de Backup por ej:
>
> Full una vez por semana
> Transaction Log una vez por hora (esto dependera de otras cosas)
> Diferencial una vez por dia
>
> Ahora me imagino que tu sistema de recuperacion es Completo verdad?
>
> Ademas puedes usar los asistentes para Backup del Admin Coorporativo


donde
> paso a paso iras armando el Backup y lo programas y todo.
>
> Bye
>
>
> Salu2
> Maxi
> Buenos Aires Argentina
> Desarrollador Microsoft 3 Estrellas .NET
> [Maxi_accotto[arroba]speedy[punto]com[punto]ar
> MSN:
>
>
> "Guillermo" escribió en el mensaje
> news:Ok3BthH$
> > Tengo el siguiente problema;
> > una base de datos, en la que tengo que tener el siguiente esquema de
> > backups:
> > en una fecha determinada (podría ser el primero de cada mes), hago un
> backup
> > full y a partir de este, un backup incremental hasta el proximo backup
> full.
> > Esto se repite todos los meses por igual.
> >
> > El primer problema que tengo, es que la fecha para el Full, no va a


ser
> > siempre la misma. Un mes puede ser el día 1 y al me siguiente puede


ser
el
> > día 10. Esto depende de un proceso de cierre que hace en la empresa.
> > Esto me genera la primera duda:
> > 1. El backup diferencial depende siempre de un bckup full, entonces,


que
> > pasa con el bakcup diferencial que se estaba haciendo al momento de
hacer
> el
> > proximo full.
> > Quiero decir, ¿cuando el hago un Full, el diferencial que se venía
> haciendo
> > se pierde o empieza de nuevo?
> >
> > Mi idea para implementar esto, es desde una aplicación Visual Basic,
darle
> > la opción al usuario, para que dispare el backup. Esto haría el Full y


a
> > continuación el diferencial. Previo, copiaría el diferencial anterior
para
> > no perderlo.
> >
> > La pregunta es si esto que estoy pensando sirve o si no va a


funcionar.
> > ¿Cómo hago para asegurarme de que el diferencial que estoy haciendo
> empiece
> > a partir de este último full?
> > ¿Cómo hago para dejar programado el diferencial, con sentencias de
> > Transact-SQL?
> > ¿Tengo que parar la programación del diferencial anterior, o se


cancela
> solo
> > a partir de este nuevo?
> >
> > Espero no estar preguntando muchas pavadas, y haber sido claro en mi
> > problema.
> >
> >
> >
> >
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.593 / Virus Database: 376 - Release Date: 22/02/2004
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 20/02/2004
Respuesta Responder a este mensaje
#5 Diego Uribe
26/02/2004 - 20:27 | Informe spam
Excelente idea.

Claro que el problema yace en el requerimiento del cliente o el uso del
backup... eso depende realmente de quien lo usa.

Y Guillermo:
Para que cambies el procedimiento dependiendo de tu necesidad, si miras la
ayuda del tsql sobre backup database encuentras esto (lo copie de alli):

BACKUP DATABASE { database_name | @database_name_var }
TO < backup_device > [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ ,] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]


Puedes sacar el backup DIFERENCIAL con sólo agregarle un parámetro..

Saludos

Diego



"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en el
mensaje news:e9cx$dJ$
Estimado!!

Creo que estas encarando la cosa un poco mal, perdoname que te lo diga no.

Si alguien corre un proceso y quiere la Base antes y despues de ese


proceso,
haciendo el backup del Log correctamente tenes eso solucionado, no veo la
necesidad de que hagas un FULL cada vez que haces ese proceso, pero si de
todas formas queres hacer lo podes hacer sin problema, claro quizas debas
administrar algun archivo de Backup incremental de ese FULL.

No se cuanto pesa tu BDD (Seria un dato interesante que me digas)

Pero si armas el Full por semana y luego por hora un log y por dia un
diferencial podrias hacer lo siguiente luego:

Suponete que el dia miercoles se pincho la Base a las 14:00Hs, supongamos
que se prendio todo fuego bien drastico.

Bien ahora vamos a empezar a restaurar,

Si el full es el Domingo entonces:

1) Restauro el Full
2) Restauro el ultimo Diferencial (Dia martes)
3) Empiezo a restaurar los Logs hasta la hora indicada.

Creo que asi deberias pensar la cosa mas o menos, si el proceso empezo
suponete a las 13:hs de un dia X vos sabes que si algo pasa podes


restaurar
los Logs hasta antes de Esa hora y tenes la Base como nuevita digamos.

Para armar todo esto te aconsejo el uso del Asistente como te dije antes
pero si lo queres programar deberias de por ejemplo armarte un Store que
haga el Backup y luego lo mandas como Job con el siguiente Store (Revisa
bien en tu manual si?)

Sp_add_job y
Sp_add_jobschedule

Bye


Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Guillermo" escribió en el mensaje
news:O8WPG2I$
> Gracias por responder Maxi,
> El tema es que el backup full, se tiene que hacer una vez terminado un
> proceso que se hace desde una aplicación.
> Por eso decía de hacerlo desde otra aplicacion, donde el usuario, al
> finalizar este proceso de cierre, hace un backup full y de ahi los
> diferenciales.
>
> Esta gente quiere tener la posibilidad de volver para atras la base de
> datos, al comienzo de un periodo determinado.
> Por eso el backup full a ese momento.
> Ademas quiere tener la posibilidad dentro de un periodo, de volver a un
día
> en particular. Por esto último es que pensaba en los backup


diferenciales
> entre cierre y cierre.
>
> Mis dudas son porque no se hasta donde, podré recuperar luego los
> diferenciales.
> Me imagino, que si antes de hacer el full, copio el diferencial que


tengo
> hasta ese momento para no perder los datos que hay dentro, y luego lo
quiero
> usar para volver la base a uno de los días del mes, necesitaré restaurar
> primero el anterior full y luego dentro del fierencial, el


correspondiente
> al día que necesito
> ¿Estoy diciendo bien?
>
> Por otro lado, no se como programar el diferencial usando t-sql, que el


lo
> que tendría que hacer despues del full para tener el diferencial de


todos
> los días
>
>
>
>
>
> "Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en


el
> mensaje news:%23KRQW9H$
> > Hola Guillermo, el Backup diferencial es la copia desde el ultimo FULL


o
> sea
> > se reinicia cuando haces un nuevo FULL digamos.
> >
> > Ahora yo aplicaria quizas otra politica de Backup por ej:
> >
> > Full una vez por semana
> > Transaction Log una vez por hora (esto dependera de otras cosas)
> > Diferencial una vez por dia
> >
> > Ahora me imagino que tu sistema de recuperacion es Completo verdad?
> >
> > Ademas puedes usar los asistentes para Backup del Admin Coorporativo
donde
> > paso a paso iras armando el Backup y lo programas y todo.
> >
> > Bye
> >
> >
> > Salu2
> > Maxi
> > Buenos Aires Argentina
> > Desarrollador Microsoft 3 Estrellas .NET
> > [Maxi_accotto[arroba]speedy[punto]com[punto]ar
> > MSN:
> >
> >
> > "Guillermo" escribió en el mensaje
> > news:Ok3BthH$
> > > Tengo el siguiente problema;
> > > una base de datos, en la que tengo que tener el siguiente esquema de
> > > backups:
> > > en una fecha determinada (podría ser el primero de cada mes), hago


un
> > backup
> > > full y a partir de este, un backup incremental hasta el proximo


backup
> > full.
> > > Esto se repite todos los meses por igual.
> > >
> > > El primer problema que tengo, es que la fecha para el Full, no va a
ser
> > > siempre la misma. Un mes puede ser el día 1 y al me siguiente puede
ser
> el
> > > día 10. Esto depende de un proceso de cierre que hace en la empresa.
> > > Esto me genera la primera duda:
> > > 1. El backup diferencial depende siempre de un bckup full, entonces,
que
> > > pasa con el bakcup diferencial que se estaba haciendo al momento de
> hacer
> > el
> > > proximo full.
> > > Quiero decir, ¿cuando el hago un Full, el diferencial que se venía
> > haciendo
> > > se pierde o empieza de nuevo?
> > >
> > > Mi idea para implementar esto, es desde una aplicación Visual Basic,
> darle
> > > la opción al usuario, para que dispare el backup. Esto haría el Full


y
a
> > > continuación el diferencial. Previo, copiaría el diferencial


anterior
> para
> > > no perderlo.
> > >
> > > La pregunta es si esto que estoy pensando sirve o si no va a
funcionar.
> > > ¿Cómo hago para asegurarme de que el diferencial que estoy haciendo
> > empiece
> > > a partir de este último full?
> > > ¿Cómo hago para dejar programado el diferencial, con sentencias de
> > > Transact-SQL?
> > > ¿Tengo que parar la programación del diferencial anterior, o se
cancela
> > solo
> > > a partir de este nuevo?
> > >
> > > Espero no estar preguntando muchas pavadas, y haber sido claro en mi
> > > problema.
> > >
> > >
> > >
> > >
> >
> >
> >
> > Outgoing mail is certified Virus Free.
> > Checked by AVG anti-virus system (http://www.grisoft.com).
> > Version: 6.0.593 / Virus Database: 376 - Release Date: 22/02/2004
> >
> >
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 20/02/2004


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida