copia seguridad diaria

02/10/2006 - 09:23 por Raquel Santamaria | Informe spam
Hola, me gustaría saber como puedo hacer una copia de seguridad diaria de
una aplicacion en VB .NET

Tengo el interface, para que a una hora seleccionada se realice la copia de
seguridad. Creo q necesito algun procedimiento, me podeis ayudar?

Preguntas similare

Leer las respuestas

#6 Alberto Poblacion
03/10/2006 - 19:18 | Informe spam
"Raquel Santamaria" wrote in message
news:
Ya he iniciado el agente del SQL... como ves mi ignorancia es mucha.

Por otro lado, he probado un pequeño programita que tenía mi antiguo
compañero
que hace backups a una hora determinada... pero me da un error, que seguro
te suenta:

"La instrucción BACKUP LOG no está permitida mientras el modelo de
recuperación sea SIMPLE. Utilice BACKUP DATABASE o cambie el modelo de
recuperación con ALTER DATABASE. [SQLSTATE 42000] (Error 4208)"

Que debo hacer?



Lo primero, tomar la decisión de si deseas dejar el modelo de
recuperación como está en la actualidad (simple) o deseas pasar a full.
En el modelo SIMPLE, que es el que tienes ahora, el log de transacciones
se vacía periódicamente de forma automática, con lo que no tienes que
preocuparte de que pueda crecer sin medida. Pero en ese caso, no puedes
hacer copias del Log, que es el error que te está dando el programa. Habría
que modificarlo para eliminar los BACKUP LOG y dejar solamente los BACKUP
DATABASE.
Con el modelo FULL, el log de transacciones nunca se vacía a no ser que
lo trunques manualmente, hasta que sacas un backup del log. Tiene la ventaja
de que los backups del log son muy rápidos y se pueden sacar con mucha
frecuencia (por ejemplo, cada 15 minutos), con lo que en caso de desastre
puedes recuperar todos los cambios de la base de datos hasta el momento del
último backup del log. En cambio con el modelo simple con copia diaria sólo
recuperarías los datos del día anterior. Como inconveniente, si se te olvida
y dejas de sacar copias del Log, éste sigue creciendo hasta que consume todo
el espacio disponible y entonces empiezas a recibir errores.
Si te decides a cambiar el modelo, ejecuta "Alter Database mibase Set
Recovery=Full". Sino, tendrás que modificar el programita que hace los
backups.
Respuesta Responder a este mensaje
#7 Alberto Poblacion
03/10/2006 - 19:31 | Informe spam
"Raquel Santamaria" wrote in message
news:
¿porque la base de
datos msdb (por defecto ya creada en sql server) guarda un registro de las
copias de seguridad que se hacen?



Se llama el "Historial de backup". Sirve para facilitar la restauración
de las copias. Cuando usas el asistente para restaurar bases de datos y
donde te pregunta que de dónde quieres restaurar le dices que "de base de
datos", se va al historial y te ofrece las copias que hay y (por lo menos en
el 2005, no estoy seguro en el 2000) te deja ya seleccionadas en el orden
correcto las que debes restaurar (La última completa, seguida de la última
diferencial, seguida por orden de todas las copias del Log posteriores a
ésta, terminando con el Log Tail si lo hubiera).
Respuesta Responder a este mensaje
#8 Raquel Santamaria
04/10/2006 - 08:22 | Informe spam
Según lo que me cuentas, es mucho mejor hacerlo de la forma FULL... lo que
no entiendo es
porque mi compañero tenía aquella instruccion q te enseñé donde ponía SIMPLE
y le funcionaba
todo el codigo (con los log incluidos)...y ahora a mi me da error.

De todos modos, donde ejecuto ese ¿alter table?


"Alberto Poblacion"
escribió en el mensaje news:
"Raquel Santamaria" wrote in message
news:
Ya he iniciado el agente del SQL... como ves mi ignorancia es mucha.

Por otro lado, he probado un pequeño programita que tenía mi antiguo
compañero
que hace backups a una hora determinada... pero me da un error, que
seguro te suenta:

"La instrucción BACKUP LOG no está permitida mientras el modelo de
recuperación sea SIMPLE. Utilice BACKUP DATABASE o cambie el modelo de
recuperación con ALTER DATABASE. [SQLSTATE 42000] (Error 4208)"

Que debo hacer?



Lo primero, tomar la decisión de si deseas dejar el modelo de
recuperación como está en la actualidad (simple) o deseas pasar a full.
En el modelo SIMPLE, que es el que tienes ahora, el log de
transacciones se vacía periódicamente de forma automática, con lo que no
tienes que preocuparte de que pueda crecer sin medida. Pero en ese caso,
no puedes hacer copias del Log, que es el error que te está dando el
programa. Habría que modificarlo para eliminar los BACKUP LOG y dejar
solamente los BACKUP DATABASE.
Con el modelo FULL, el log de transacciones nunca se vacía a no ser que
lo trunques manualmente, hasta que sacas un backup del log. Tiene la
ventaja de que los backups del log son muy rápidos y se pueden sacar con
mucha frecuencia (por ejemplo, cada 15 minutos), con lo que en caso de
desastre puedes recuperar todos los cambios de la base de datos hasta el
momento del último backup del log. En cambio con el modelo simple con
copia diaria sólo recuperarías los datos del día anterior. Como
inconveniente, si se te olvida y dejas de sacar copias del Log, éste sigue
creciendo hasta que consume todo el espacio disponible y entonces empiezas
a recibir errores.
Si te decides a cambiar el modelo, ejecuta "Alter Database mibase Set
Recovery=Full". Sino, tendrás que modificar el programita que hace los
backups.




Respuesta Responder a este mensaje
#9 Carlos Gómez
04/10/2006 - 08:34 | Informe spam
Alberto Poblacion ha escrito:

...Con el modelo FULL, el log de transacciones nunca se vacía a no ser que
lo trunques manualmente, hasta que sacas un backup del log...



¿como se puede saber el tamaño actual del log de transacciones?
Respuesta Responder a este mensaje
#10 Raquel Santamaria
04/10/2006 - 08:35 | Informe spam
Te mando el codigo del procedimiento donde esta la famosa linea de SIMPLE, a
ver si le puedes
echar un vistazo y ver porque razon me falla si no pongo RECOVERY (y si
realmente debo cambiarlo,
porque tampoco lo tengo tan claro) y a mi compañero no le pasaba lo
mismo Gracias

cmd.CommandText = _

"CREATE procedure sp_AW_BK_Petnauta " & _

" @pDatabaseName varchar(255), " & _

" @pBackUpPath varchar(255) = 'DEFAULT', " & _

" @pFullBackup bit, " & _

" @pShrinkLog int = 0, " & _

" @pForSnapshot bit = 0, " & _

" @pTruncateLog bit = 1 " & _

"as " & _

" " & _

"declare @BackUpFile varchar (255) " & _

" ,@cmd varchar(8000) " & _

" ,@returnstatus int " & _

" ,@Processflowerror varchar(255) " & _

" ,@ErrorMessage varchar (8000) " & _

" ,@ExecStr varchar(8000) " & _

" " & _

"set nocount on " & _

" " & _

"select @ErrorMessage='Procedure: sp_AW_BK_Petnauta' + char(13) " & _

"select @ErrorMessage=@ErrorMessage + ' Parameter @pDatabaseName is : ' +
@pDatabaseName + char(13) " & _

"select @ErrorMessage=@ErrorMessage + ' Parameter @pBackUpPath is : ' +
@pBackUpPath + char(13) " & _

"select @ErrorMessage=@ErrorMessage + ' Parameter @pFullBackup is : ' +
cast(@pFullBackup as varchar) + char(13) " & _

"select @ErrorMessage=@ErrorMessage + ' Parameter @pShrinkLog is : ' +
cast(@pShrinkLog as varchar) + char(13) " & _

" " & _

"if upper(@pBackUpPath)='DEFAULT' " & _

" select @pBackUpPath= 'D:\Source' " & _

" " & _

"if right(@pBackUpPath,1)<>'\' " & _

" select @pBackUpPath=@pBackUpPath +'\' " & _

" " & _

"if (@pFullBackup = 0) and (SELECT DATABASEPROPERTYEX(@pDatabaseName,
N'SIMPLE')) = 'RECOVERY' " & _

" begin " & _

" select @Processflowerror = 'The Recovery Model for Database ' +
@pDatabaseName + ' is SIMPLE, and the backup log is not allowed.' " & _

" goto ErrorHandler " & _

" end " & _

" " & _

"if @pFullBackup = 1 " & _

" select @BackUpFile=@pBackUpPath + @pDatabaseName + '_FullBackup_' +
cast(datepart(yyyy, getdate()) as varchar(4)) + " & _

" cast(datepart(mm, getdate()) as varchar(2)) + cast(datepart(dd, getdate())
as varchar(2)) + '.Bak' " & _

"else if @pForSnapshot = 1 " & _

" select @BackUpFile=@pBackUpPath + @pDatabaseName + '_LogBackup99.Bak' " &
_

"else " & _

" select @BackUpFile=@pBackUpPath + @pDatabaseName + '_LogBackup' +
cast(datepart(HH, getdate()) as varchar(2)) + '.Bak' " & _

" " & _

"select @cmd = 'dir ' + '""' + @pBackUpPath+'""' " & _

"exec @returnstatus = master.dbo.xp_cmdshell @CMD, no_output " & _

"if @returnstatus <> 0 " & _

" begin " & _

" select @Processflowerror = 'Could not locate backup path :"" ' +
@pBackUpPath +'""' " & _

" goto ErrorHandler " & _

" end " & _

" " & _

"select @cmd = 'dir ' + '""' + @BackUpFile +'""' " & _

"exec @returnstatus = master.dbo.xp_cmdshell @CMD, no_output " & _

"if @returnstatus = 0 " & _

" begin " & _

" select @cmd = 'del /F ' + '"" ' + @BackUpFile +'"" ' " & _

" exec @returnstatus = master.dbo.xp_cmdshell @CMD, no_output " & _

" " & _

" select @cmd = 'dir ' + '"" ' + @BackUpFile +'""' " & _

" exec @returnstatus = master.dbo.xp_cmdshell @CMD, no_output " & _

" if @returnstatus = 0 " & _

" begin " & _

" select @Processflowerror = 'Could not delete backup file :"" ' +
@BackUpFile +'""' " & _

" goto ErrorHandler " & _

" end " & _

" end " & _

" " & _

" " & _

"if @pShrinkLog<>0 and @pFullBackup = 1 " & _

" begin " & _

" select @ExecStr= 'USE ' + @pDatabaseName + char(13) " & _

" select @ExecStr= @ExecStr + 'checkpoint ' + char(13) " & _

" select @ExecStr= @ExecStr + 'waitfor delay ''00:00:01''' + char(13) " & _

" select @ExecStr= @ExecStr + 'checkpoint ' + char(13) " & _

" select @ExecStr= @ExecStr + 'BACKUP LOG [' + @pDatabaseName + ']' " & _

" select @ExecStr= @ExecStr + ' TO DISK = N''' + @pBackUpPath +
@pDatabaseName + '_LogBackup0.Bak' + ''' WITH INIT , NOUNLOAD , ' " & _

" select @ExecStr= @ExecStr + ' NAME = N''' + @pDatabaseName + ' backup'',
NOSKIP , NOFORMAT ' " & _

" select @ExecStr= @ExecStr + 'alter database ' + @pDatabaseName + ' set
recovery simple ' + char(13) " & _

" select @ExecStr= @ExecStr + 'dbcc shrinkfile (' + @pDatabaseName + '_log)'
+ char(13) " & _

" select @ExecStr= @ExecStr + 'alter database ' + @pDatabaseName + ' set
recovery full' + char(13) " & _

" select @ExecStr= @ExecStr + 'alter database ' + @pDatabaseName + ' modify
file (name = ' + @pDatabaseName + '_log, size = 50MB)' " & _

" select @ExecStr " & _

" raiserror ('Executing log file shrinking for database %s
',0,1,@pDatabaseName)with nowait " & _

" exec ( @ExecStr) " & _

" if @@Error<>0 " & _

" begin " & _

" select @Processflowerror = 'Error shrinking log file :"" ' + @ExecStr
+'""' " & _

" goto ErrorHandler " & _

" end " & _

" end " & _

" " & _

"if @pFullBackup = 1 " & _

" select @ExecStr= 'BACKUP DATABASE [' + @pDatabaseName + ']' " & _

"else " & _

" select @ExecStr= 'BACKUP LOG [' + @pDatabaseName + ']' " & _

"select @ExecStr= @ExecStr + ' TO DISK = N''' +@BackUpFile + ''' WITH INIT ,
NOUNLOAD , ' " & _

"select @ExecStr= @ExecStr + ' NAME = N''' + @pDatabaseName + ' backup'',
NOSKIP , NOFORMAT ' " & _

"if @pTruncateLog = 0 " & _

" select @ExecStr= @ExecStr + ', NO_TRUNCATE ' " & _

"raiserror ('Executing backup for database %s to file %s
',0,1,@pDatabaseName,@BackUpFile)with nowait " & _

"exec ( @ExecStr) " & _

"if @@Error<>0 " & _

" begin " & _

" select @Processflowerror = 'Error in back up sentence :"" ' + @ExecStr
+'""' " & _

" goto ErrorHandler " & _

" end " & _

" " & _

"raiserror ('Process completed ',0,1)with nowait " & _

" " & _

"return 0 " & _

"ErrorHandler: " & _

" select @ErrorMessage= @Processflowerror +char(13) + ' executing ' +
char(13) +@ErrorMessage " & _

" raiserror (@ErrorMessage,16,1) "

cmd.ExecuteNonQuery()
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida