- Event Handlers en WinForms ... 30/07/2010
- ¡La historia clínica es mia! En el día de hoy se anunció una nueva disposición legal en la Argentina por la cual se reconoce... 23/10/2009
- La eterna discusión de quién tiene más botones Un poco más sobre la clásica disputa Mac vs.... 20/10/2009
- Use Cases vs. User Stories Opinión personal sobre el empleo de Use Cases y User Stories para definir requisitos... 20/10/2009
- Lanzamiento de Google Maps en Argentina A partir de hoy Google lanzó el Centro de Comercios Locales en Google Maps Argentina. Este... 02/10/2009
- Reloj mundial Increible reloj que da la hora en cualquier punto del planeta al mismo... 29/08/2009
- Error Saving changes is not permitted en SQL Server 2008 Solución al error que impide guardar cambios que requieren re-crear las tablas en SQL Server... 29/08/2009
- Uso de Branches y Tags con SVN El uso de branches y tags en SVN nos permite una mejor organización del trabajo en equipo. Si bien... 28/08/2009
- Cómo determinar la paridad de claves para encriptación con DES Un tema que resulta confuso es determinar si una clave DES es odd parity o even parity. El... 28/08/2009
- Power Tip para Builds Lentos en aplicaciones Mobile Si estás desarrollando una aplicación Mobile con Visual Studio, por alguna extraña razón que... 28/08/2009
Backups automáticos en SQL Server 2005
Cómo realizar backups automáticos con línea de comandos en SQL Server 2005.
Marcelo Ruiz, 28/08/2009
Hasta el día de hoy, no había tenido jamás la necesidad de acceder a SQL Server por línea de comando, aunque había trabajado accediendo a bases de datos de esta forma en varias oportunidades con MySQL y Oracle. Supuse que una herramienta así debería existir, y así es: para los que no lo conocen, el programa SQLCMD se instala con SQL Server en la carpeta C:\Archivos de programa\Microsoft SQL Server\90\Tools\Binn.
La necesidad de esta herramiento surgió porque necesitaba implementar la realización de copias de seguridad para un cliente y es el tip que voy a compartir hoy con ustedes. Para configurar este proceso se necesita lo siguiente:
- Crear un script SQL que realice la copia de seguridad.
- Crear un archivo batch que ejecute el SQLCMD y el script SQL.
- Crear una tarea programada en Windows para que llame al archivo batch con la regularidad deseada.
El script backup.SQL
Este script realiza un backup de la base de datos de una forma muy sencilla:
- Setea la base de datos en modo SINGLE_USER.
- Realiza la copia de seguridad.
- Vuelve a setear la base de datos en modo MULTI_USER.
Sin más preambulos, los dejo con el script:
DECLARE @fecha VARCHAR(50)
DECLARE @archivo VARCHAR(50)
SET @fecha = CONVERT(VARCHAR(4), YEAR(GETDATE()))+'-'+ CONVERT(VARCHAR(2), MONTH(GETDATE()))+'-'+CONVERT(VARCHAR(2), DAY(GETDATE()))
SET @archivo = 'C:\tmp\BD_'+ @fecha +'.bak'
ALTER DATABASE BD SET SINGLE_USER WITH ROLLBACK IMMEDIATE
BACKUP DATABASE BD TO DISK = @archivo
ALTER DATABASE BD SET MULTI_USER
GO
EXIT
Lo único que deberán tener en cuenta es crear la carpeta C:\tmp con permisos de escritura para el usuario Servicio de Red y reemplazar BD por el nombre de la base de datos que desean resguardar.
El archivo batch backup.bat
Este archivo se encarga de llamar al SQLCMD y pasarle el script que vimos anteriormente:
SQLCMD -S(local)\SQLEXPRESS -E -i"C:\backup.sql" "C:\Archivos de programa\WinRAR\rar" a BACKUP.rar c:\TMP*.* ECHO S | DEL c:\TMP Observen que la forma de conectarse al servidor, en la primera línea se especifica con el flag -S, seguido del nombre del Servidor, en mi caso (local)\SQLEXPRESS. Luego, el flag -E indica conexión con autenticación de Windows. Finalmente con el flag -i se especifica el archivo SQL a ejecutar. Pueden obtener más información sobre SQLCMD en este artículo de Database Journal.
En la segunda línea procedemos a comprimir los archivos del backup, que se encuentran en la carpeta C:\TMP. Para esto utilizamos WinRAR (que deberían descargar si quieren utilizar esto). Finalmente borramos todo el contenido del directorio C:\tmp. Tengan en cuenta que si no quieren comprimir, también deben eliminar esta línea.
Configuración de la tarea programada Programar tareas para su ejecución en Windows es muy sencillo, por lo que no me voy a explayar mucho. Simplemente vayan a: Panel de Control/Tareas Programadas/Agregar tarea programada y sigan los pasos del asistente. El archivo que deberían seleccionar para ejecutarse es backup.bat y la frecuencia es a su gusto y necesidad.
Publique su comentario
Comentarios
xinxin! 2009-11-17 00:00:00
buena solucion!
Pavel 2010-01-04 00:00:00
Genial, gracias!
johnnybelo 2010-01-26 00:00:00
Gracias por el aporte!
saludos...
Pablo 2010-06-09 00:00:00
Excelente la solución, solo una consulta: como hago para que al ejecutar el arch .bat, no salga la ventana negra de dos? Muchas Gracias
Javier Fernando Rojas Chavez 2010-08-17 00:00:00
Excelente solución...

