Backup automatico en SQL Server Express

02/07/2008 - 10:02 por Luis R. | Informe spam
Saludos a todo el foro.

Tengo SQL Server 2005 Express con una pequeña BBDD perteneciente a una
aplicación. La versión de SQL es la 9.0.2047

¿Cómo puedo realizar un backup de una base de datos concreta de forma
automática? Desde el "Management Studio"se que puedo hacerla manual (botón
derecha del ratón sobre la BBDD, tareas y copia de seguridad) pero no veo
ninguna opción de programación de la copia.

¿Se puede crear una tarea de windows con una linea de comandos que realice
el proceso? Si es así, agradecería información sobre el comando a usar,
parámetros, etc.

En caso contrario, había pensado en parar el servicio de SQL, copiar a pelo
los 2 archivos, y volver a arrancar el servicio de SQL ¿Es eficiente esta
solución? El proceso se lanzaría a las 22:00 horas, cuando ningún usuario
esté trabajando.

Gracias,
Luis R.

Preguntas similare

Leer las respuestas

#1 Juan Diego Bueno
02/07/2008 - 10:21 | Informe spam
Hola Luis:


Luis R. ha formulado la pregunta :
Saludos a todo el foro.

Tengo SQL Server 2005 Express con una pequeña BBDD perteneciente a una
aplicación. La versión de SQL es la 9.0.2047

¿Cómo puedo realizar un backup de una base de datos concreta de forma
automática? Desde el "Management Studio"se que puedo hacerla manual (botón
derecha del ratón sobre la BBDD, tareas y copia de seguridad) pero no veo
ninguna opción de programación de la copia.

¿Se puede crear una tarea de windows con una linea de comandos que realice el
proceso? Si es así, agradecería información sobre el comando a usar,
parámetros, etc.

En caso contrario, había pensado en parar el servicio de SQL, copiar a pelo
los 2 archivos, y volver a arrancar el servicio de SQL ¿Es eficiente esta
solución? El proceso se lanzaría a las 22:00 horas, cuando ningún usuario
esté trabajando.



Creo que hay utilidades que automatizan tareas en estos casos, pero
ahora mismo no recuerdo. Yo hago lo que tu planteas, una tarea con un
comando que realiza el backup. En mi caso, es un ejecutable en C que
hace una llamada a la shell, pero podría ser un .bat mismamente.
Antes debes crear un dispositivo de backup

La sintaxis que yo utilizo es la siguiente:

osql -S SERVIDOR\SQLEXPRESS -U usuario -P contraseña -Q "backup
database nombrebd to dispositivobackup"

Puesto que este comando estará visible en el archivo .bat o si lo
llamas desde un shell en un exe, te recomiendo que crees un usuario que
sólo tenga permisos para crear backups sobre esa base de datos
(asegúrate que solo para crear y no para restaurar, que igual a alguien
se le ocurre restaurar una anterior y te hace un hijo de madera).

Saludos

http://www.moondance.es
Respuesta Responder a este mensaje
#2 Luis R.
02/07/2008 - 10:38 | Informe spam
Gracias por ayudarme, Juan Diego.

veo que la sentencia BACKUP TO anexa la copia de seguridad al contenedor,
haciendo éste cada vez más grande. ¿Habría posibilidad de vaciar el
contenedor antes de realizar la copia?

Por otro lado, a parte de la BD de mi aplicación, entiendo que también
tendré que hacer copia de las BD master y tempdb ¿Correcto?

Saludos,
Luis R.

"Juan Diego Bueno" escribió en el mensaje
news:
Hola Luis:


Luis R. ha formulado la pregunta :
Saludos a todo el foro.

Tengo SQL Server 2005 Express con una pequeña BBDD perteneciente a una
aplicación. La versión de SQL es la 9.0.2047

¿Cómo puedo realizar un backup de una base de datos concreta de forma
automática? Desde el "Management Studio"se que puedo hacerla manual
(botón derecha del ratón sobre la BBDD, tareas y copia de seguridad) pero
no veo ninguna opción de programación de la copia.

¿Se puede crear una tarea de windows con una linea de comandos que
realice el proceso? Si es así, agradecería información sobre el comando a
usar, parámetros, etc.

En caso contrario, había pensado en parar el servicio de SQL, copiar a
pelo los 2 archivos, y volver a arrancar el servicio de SQL ¿Es eficiente
esta solución? El proceso se lanzaría a las 22:00 horas, cuando ningún
usuario esté trabajando.



Creo que hay utilidades que automatizan tareas en estos casos, pero ahora
mismo no recuerdo. Yo hago lo que tu planteas, una tarea con un comando
que realiza el backup. En mi caso, es un ejecutable en C que hace una
llamada a la shell, pero podría ser un .bat mismamente.
Antes debes crear un dispositivo de backup

La sintaxis que yo utilizo es la siguiente:

osql -S SERVIDOR\SQLEXPRESS -U usuario -P contraseña -Q "backup database
nombrebd to dispositivobackup"

Puesto que este comando estará visible en el archivo .bat o si lo llamas
desde un shell en un exe, te recomiendo que crees un usuario que sólo
tenga permisos para crear backups sobre esa base de datos (asegúrate que
solo para crear y no para restaurar, que igual a alguien se le ocurre
restaurar una anterior y te hace un hijo de madera).

Saludos

http://www.moondance.es



Respuesta Responder a este mensaje
#3 Luis R.
02/07/2008 - 10:51 | Informe spam
Otra cosa, ¿Cómo le doy los permisos necesarios para que solo pueda hacer
copias de seguridad y no pueda restaurarlas? He creado un usuario de SQL, y
en el apartado "Asignación de usuarios" dentro de las propiedades, marco las
BBDD de las cuales quiero hacer el backup, y en cada una de ellas marco la
función de BBDD "bd_backupoperator", y ninguna otra.


"Juan Diego Bueno" escribió en el mensaje
news:
Hola Luis:


Luis R. ha formulado la pregunta :
Saludos a todo el foro.

Tengo SQL Server 2005 Express con una pequeña BBDD perteneciente a una
aplicación. La versión de SQL es la 9.0.2047

¿Cómo puedo realizar un backup de una base de datos concreta de forma
automática? Desde el "Management Studio"se que puedo hacerla manual
(botón derecha del ratón sobre la BBDD, tareas y copia de seguridad) pero
no veo ninguna opción de programación de la copia.

¿Se puede crear una tarea de windows con una linea de comandos que
realice el proceso? Si es así, agradecería información sobre el comando a
usar, parámetros, etc.

En caso contrario, había pensado en parar el servicio de SQL, copiar a
pelo los 2 archivos, y volver a arrancar el servicio de SQL ¿Es eficiente
esta solución? El proceso se lanzaría a las 22:00 horas, cuando ningún
usuario esté trabajando.



Creo que hay utilidades que automatizan tareas en estos casos, pero ahora
mismo no recuerdo. Yo hago lo que tu planteas, una tarea con un comando
que realiza el backup. En mi caso, es un ejecutable en C que hace una
llamada a la shell, pero podría ser un .bat mismamente.
Antes debes crear un dispositivo de backup

La sintaxis que yo utilizo es la siguiente:

osql -S SERVIDOR\SQLEXPRESS -U usuario -P contraseña -Q "backup database
nombrebd to dispositivobackup"

Puesto que este comando estará visible en el archivo .bat o si lo llamas
desde un shell en un exe, te recomiendo que crees un usuario que sólo
tenga permisos para crear backups sobre esa base de datos (asegúrate que
solo para crear y no para restaurar, que igual a alguien se le ocurre
restaurar una anterior y te hace un hijo de madera).

Saludos

http://www.moondance.es



Respuesta Responder a este mensaje
#4 Juan Diego Bueno
02/07/2008 - 11:34 | Informe spam
Hola Luis:
Después de mucho reflexionar, Luis R. ha escrito :

veo que la sentencia BACKUP TO anexa la copia de seguridad al contenedor,
haciendo éste cada vez más grande. ¿Habría posibilidad de vaciar el
contenedor antes de realizar la copia?



Pues solo se me ocurre que crees otra tarea que copie el archivo a otra
ubicación. También puedes crear un backup diferencial que solo recoja
los cambios de un backup a otro.

Por otro lado, a parte de la BD de mi aplicación, entiendo que también tendré
que hacer copia de las BD master y tempdb ¿Correcto?



Pues la verdad que ni idea, es decir, yo hago backups de las BDs que
necesito, y no suelo hacerlo de esas dos. Para mantener usuarios y
objetos propios del servidor, supongo que es necesario.

Otra cosa, ¿Cómo le doy los permisos necesarios para que solo pueda hacer
copias de seguridad y no pueda restaurarlas? He creado un usuario de SQL, y
en el apartado "Asignación de usuarios" dentro de las propiedades, marco las
BBDD de las cuales quiero hacer el backup, y en cada una de ellas marco la
función de BBDD "bd_backupoperator", y ninguna otra.



Uy... si te digo que esto lo hice una vez y ahora no recuerdo cómo...

Creo que fue así:

Tomas el usuario en el apartado de usuarios propios de la BD, en
Propiedades-->Elementos que pueden protegerse. En Agregar, seleccionas
la base de datos en cuestión (en tipos de objeto--bases de datos y como
nombre de objeto, el de la BD). Tendrás en la parte inferior los
permisos explícitos. Yo solo tengo marcados el de backup database,
backup log, checkpoint y connect. El resto los tengo denegados.

Espero que te sirva

Saludos

http://www.moondance.es
Respuesta Responder a este mensaje
#5 Luis R.
02/07/2008 - 11:41 | Informe spam
Te cuento hasta donde he llegado:

Si a la sentencia T-SQL se añade al final de la misma "WITH INIT", el
archivo de backup se "limpia" o "inicializa".

Por cierto, creo que las BBDD del sistema que conviene copiar son master y
msdb. Esto nos lo podría confirmar algún gurú del foro...

Queda pendiente el tema de los permisos necesarios al usuario "backup" para
que solo pueda realizar copias de seguridad, pero no pueda restaurarlas ni
nada más.

Saludos,
Luis R.


"Juan Diego Bueno" escribió en el mensaje
news:
Hola Luis:
Después de mucho reflexionar, Luis R. ha escrito :

veo que la sentencia BACKUP TO anexa la copia de seguridad al contenedor,
haciendo éste cada vez más grande. ¿Habría posibilidad de vaciar el
contenedor antes de realizar la copia?



Pues solo se me ocurre que crees otra tarea que copie el archivo a otra
ubicación. También puedes crear un backup diferencial que solo recoja los
cambios de un backup a otro.

Por otro lado, a parte de la BD de mi aplicación, entiendo que también
tendré que hacer copia de las BD master y tempdb ¿Correcto?



Pues la verdad que ni idea, es decir, yo hago backups de las BDs que
necesito, y no suelo hacerlo de esas dos. Para mantener usuarios y objetos
propios del servidor, supongo que es necesario.

Otra cosa, ¿Cómo le doy los permisos necesarios para que solo pueda hacer
copias de seguridad y no pueda restaurarlas? He creado un usuario de SQL,
y en el apartado "Asignación de usuarios" dentro de las propiedades,
marco las BBDD de las cuales quiero hacer el backup, y en cada una de
ellas marco la función de BBDD "bd_backupoperator", y ninguna otra.



Uy... si te digo que esto lo hice una vez y ahora no recuerdo cómo...

Creo que fue así:

Tomas el usuario en el apartado de usuarios propios de la BD, en
Propiedades-->Elementos que pueden protegerse. En Agregar, seleccionas la
base de datos en cuestión (en tipos de objeto--bases de datos y como
nombre de objeto, el de la BD). Tendrás en la parte inferior los permisos
explícitos. Yo solo tengo marcados el de backup database, backup log,
checkpoint y connect. El resto los tengo denegados.

Espero que te sirva

Saludos

http://www.moondance.es



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