Hacer backup de SQL desde un Create Procedure con la fecha en el nombre

30/03/2006 - 18:25 por mayowr | Informe spam
Buenos días.
Soy totalmente inexperta en SQL, y quiero consultar algo.

Quiero saber si posible que se haga un backup de tal forma que el
nombre de este quede con la fecha y la hora en que se hizo. Por
ejemplo: Prueba20060330-0550.bak

Tengo el siguiente Stored Procedure como instrucción para los
backups:

CREATE PROCEDURE BACK_UP @FECHA VARCHAR(8) AS
BEGIN
BACKUP DATABASE [ERECOSNOM] TO DISK = N'E:\DBASES\BACKUP\Prueba.BAK'
WITH INIT , NOUNLOAD , NAME = N'Copia de seguridad PRUEBASOFT',
NOSKIP , STATS = 10
END
GO

Este Store Procedure, si me hace el backup pero me lo deja con el
nombre prueba.bak sencillo, sin la fecha ni la hora. Yo veo que tiene
un
datos de fecha, pero no está funcionando correctamente, ya que no lo
pone en el nombre del backup..

Muchas gracias al que me pueda orientar.

Preguntas similare

Leer las respuestas

#1 Isaias
30/03/2006 - 22:11 | Informe spam
DECLARE @DEVBACK VARCHAR(30)
CHECKPOINT
CHECKPOINT

BACKUP LOG mybase WITH NO_LOG

SELECT @DEVBACK = 'mybase'+CONVERT(CHAR(8), GETDATE(), 112)

BACKUP DATABASE mybase TO @DEVBACK WITH INIT

Saludos
IIslas


"" escribió:

Buenos días.
Soy totalmente inexperta en SQL, y quiero consultar algo.

Quiero saber si posible que se haga un backup de tal forma que el
nombre de este quede con la fecha y la hora en que se hizo. Por
ejemplo: Prueba20060330-0550.bak

Tengo el siguiente Stored Procedure como instrucción para los
backups:

CREATE PROCEDURE BACK_UP @FECHA VARCHAR(8) AS
BEGIN
BACKUP DATABASE [ERECOSNOM] TO DISK = N'E:\DBASES\BACKUP\Prueba.BAK'
WITH INIT , NOUNLOAD , NAME = N'Copia de seguridad PRUEBASOFT',
NOSKIP , STATS = 10
END
GO

Este Store Procedure, si me hace el backup pero me lo deja con el
nombre prueba.bak sencillo, sin la fecha ni la hora. Yo veo que tiene
un
datos de fecha, pero no está funcionando correctamente, ya que no lo
pone en el nombre del backup..

Muchas gracias al que me pueda orientar.


Respuesta Responder a este mensaje
#2 mayowr
30/03/2006 - 22:37 | Informe spam
Isaias.
Primero que todo, gracias por responder. Como no tengo ni idea de SQL
(lo estoy utilizando es porque un aplicativo de la compañía tiene
como motor de base de datos SQL, y la versión que tengo es MSDE #8,
sp 3/3a), perdona si te hago preguntas muy obvias o muy tontas.
1. Debo crear un Store Procedure tal cual como me lo escribiste y solo
cambio donde dice mybase por el nombre de mi base de datos?.
2. Porque hay que borrar log de transacciones antes de hacer el
backup?.
3. En que directorio me quedaria ese backup?

Nuevamente gracias,
Saludos,
Mayo
Respuesta Responder a este mensaje
#3 Isaias
31/03/2006 - 00:09 | Informe spam
Mayo

1.- Si, debes crear un STORE PROCEDURE, tal cual lo escribi y donde dice
"mybase", cambiarlo por el nombre de TU BASE.

2.- Supongo que tu BACKUP lo haras en los momentos que NO tengas usuarios
conectados (normalmente, asi lo hacemos, por las madrugadas por ejemplo),
debemos limpiar el LOG, para no guardar TODAS las transacciones que fueron
concretadas en nuestro respaldo, ademas con esto, disminuimos el espacio
ocupado en el LOG de transacciones.

3.- Asi quedaria el script final:

CREATE PROCEDURE pr_ElaboraRespaldos

AS
BEGIN
SET NOCOUNT ON
DECLARE @FileBack VARCHAR(100), @FileDevice VARCHAR(100)
CHECKPOINT
CHECKPOINT

BACKUP LOG mybase WITH NO_LOG

SET @FileBack = 'F:\Respaldos\mybaseback'+CONVERT(CHAR(8), GETDATE(), 112)
SET @FileDevice = 'MyDevice'++CONVERT(CHAR(8), GETDATE(), 112)
EXEC sp_addumpdevice 'disk', @FileDevice, @FileBack

BACKUP DATABASE mybase TO @FileDevice WITH INIT
END


Saludos
IIslas


"Isaias" escribió:

DECLARE @DEVBACK VARCHAR(30)
CHECKPOINT
CHECKPOINT

BACKUP LOG mybase WITH NO_LOG

SELECT @DEVBACK = 'mybase'+CONVERT(CHAR(8), GETDATE(), 112)

BACKUP DATABASE mybase TO @DEVBACK WITH INIT

Saludos
IIslas


"" escribió:

> Buenos días.
> Soy totalmente inexperta en SQL, y quiero consultar algo.
>
> Quiero saber si posible que se haga un backup de tal forma que el
> nombre de este quede con la fecha y la hora en que se hizo. Por
> ejemplo: Prueba20060330-0550.bak
>
> Tengo el siguiente Stored Procedure como instrucción para los
> backups:
>
> CREATE PROCEDURE BACK_UP @FECHA VARCHAR(8) AS
> BEGIN
> BACKUP DATABASE [ERECOSNOM] TO DISK = N'E:\DBASES\BACKUP\Prueba.BAK'
> WITH INIT , NOUNLOAD , NAME = N'Copia de seguridad PRUEBASOFT',
> NOSKIP , STATS = 10
> END
> GO
>
> Este Store Procedure, si me hace el backup pero me lo deja con el
> nombre prueba.bak sencillo, sin la fecha ni la hora. Yo veo que tiene
> un
> datos de fecha, pero no está funcionando correctamente, ya que no lo
> pone en el nombre del backup..
>
> Muchas gracias al que me pueda orientar.
>
>
Respuesta Responder a este mensaje
#4 mayowr
31/03/2006 - 02:40 | Informe spam
Buenas noches Isaias...

Te cuento que probé con el scrip que gentilmente me diste y me generó
el siguiente Error:
Num - 2147217900 --
Agregado dispositivo 'Disk'.
No se puede abrir el dispositivo de copia de seguridad
'MyDevice20060330'. Error de dispositivo o dispositivo sin conexión.
Consulte el registro de errores de SQL Server para obtener más
información.
Fin anómalo de BACKUP DATABASE.

Este fue el Store Procedure que ejecute:

CREATE PROCEDURE pr_ElaboraRespaldos

AS
BEGIN
SET NOCOUNT ON
DECLARE @FileBack VARCHAR(100), @FileDevice
VARCHAR(100)
CHECKPOINT
CHECKPOINT
BACKUP LOG PRUEBAMI WITH NO_LOG
SET @FileBack = 'E:\DBASE\BACKUP'+CONVERT(CHAR(8), GETDATE(),
112)
SET @FileDevice = 'MyDevice'++CONVERT(CHAR(8), GETDATE(), 112)

EXEC sp_addumpdevice 'disk', @FileDevice, @FileBack

BACKUP DATABASE PRUEBAMI TO @FileDevice WITH INIT
END

Como creí que me faltaba el \ en 'E:\DBASE\BACKUP\', (reemplacé lo
que colocaste de 'F:\Respaldos\mybaseback'), lo volví a ejecutar y ya
me generó el siguiente Error.

El dispositivo lógico 'MyDevice20060330' ya existe.
No se puede abrir el dispositivo de copia de seguridad
'MyDevice20060330'. Error de dispositivo o dispositivo sin conexión.
Consulte el registro de errores de SQL Server para obtener más
información.
Fin anómalo de BACKUP DATABASE.

No tengo ni idea de que son dispositivos de copia de seguridad.

Que le ves de malo al Store Procedure?. Tengo la versión de MSDE #8
sp3/3a. Será que en esa version libre no funcionan esos parametros?
También busque en todo el disco algun archivo que fuera
MyDevice20060330 y no encontre nada.

Nuevamente mil gracias por toda tu ayuda.

Saludos,
Mayo
Respuesta Responder a este mensaje
#5 Alejandro Mesa
31/03/2006 - 18:49 | Informe spam
Trata el mismo sp que posteastes, solo que usa una variable para generar el
nombre del archivo y pasa la variable en la sentencia/comando backup.

CREATE PROCEDURE BACK_UP @FECHA VARCHAR(8) AS
BEGIN

declare @f nvarchar(256)

set @f = N'E:\DBASES\BACKUP\Prueba' + convert(nvarchar(8), #fecha, 112) +
'.BAK'

BACKUP DATABASE [ERECOSNOM]
TO DISK = @f
WITH INIT , NOUNLOAD , NAME = N'Copia de seguridad PRUEBASOFT',
NOSKIP , STATS = 10
END
GO


AMB

"" wrote:

Buenos días.
Soy totalmente inexperta en SQL, y quiero consultar algo.

Quiero saber si posible que se haga un backup de tal forma que el
nombre de este quede con la fecha y la hora en que se hizo. Por
ejemplo: Prueba20060330-0550.bak

Tengo el siguiente Stored Procedure como instrucción para los
backups:

CREATE PROCEDURE BACK_UP @FECHA VARCHAR(8) AS
BEGIN
BACKUP DATABASE [ERECOSNOM] TO DISK = N'E:\DBASES\BACKUP\Prueba.BAK'
WITH INIT , NOUNLOAD , NAME = N'Copia de seguridad PRUEBASOFT',
NOSKIP , STATS = 10
END
GO

Este Store Procedure, si me hace el backup pero me lo deja con el
nombre prueba.bak sencillo, sin la fecha ni la hora. Yo veo que tiene
un
datos de fecha, pero no está funcionando correctamente, ya que no lo
pone en el nombre del backup..

Muchas gracias al que me pueda orientar.


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