martes, 24 de marzo de 2009

Backups automáticos en SQL Server 2005

hoy estuve con Paul, un compañero de trabajo cuestienandonos la mejor forma de hacer respaldos en Sql Server de forma Automatica.

primero hay que generar un script al cual llamaremos backup.sql y lo crearemos en c:\

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


Ojo en hay que Cambiar DB por el nombre de la base de datos. Ademas este script cambia la Db a "MULTI USER".

luego crearemos backup.bat, con el siguiente contenido

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


Utilizamos la utilidad SQLCMD para que ejecute en backup.sql en x servidor.
Aqui hay un manual de SQLCMD

Ahora solo es cosa de programar una tarea cada x tiempo para que ejecute el bat
--
Atte.
Victor Hugo Saavedra
http://vhspiceros.blogspot.com

29 comentarios:

  1. PIENSO QUE LA FECHA SE PODRIA HACER ASI:
    SET @fecha = CONVERT(varchar(8),getdate(),112)
    --el 112 es para el formato yyyymmdd

    ResponderEliminar
  2. Asias espero que sea lo que estoy buscando puesto que estoy intentando automatizar todas las copias de mis BBDD y solo me qeda del SQL server

    ResponderEliminar
  3. Gracias por el aporte muy bueno y comentarles que funciona sin problemas en la version SQL SERVER 2008 lo probe en un servidor windows 2008 server, cualquier aclaración o duda robcaa3@hotmail.com

    Atentamente.

    Roberto....

    ResponderEliminar
  4. Buen día, como puedo hacer que el archivo backup.bat se ejecute en el servidor?

    ResponderEliminar
  5. una opcion que creo que es bastante razonable, puede ser ocupar las tareas programadas de windows.

    --
    Atte.
    Víctor Hugo Saavedra

    ResponderEliminar
  6. Para automatizar el script de backup puedes utilizar el Agente de SQL server que nos permite programas eventos, y es muy parecido a las tareas programadas de windows

    Atte
    Roberto Ascencio.

    ResponderEliminar
  7. Te pasaste amigo, gracias por compartir tus conocimientos...
    Atte. Cesar Honorio

    ResponderEliminar
  8. Como podria mandar ese archivo a una ruta?

    ResponderEliminar
  9. ahi tiene un ejemplo para SQL 2008 utilizando el Agante de SQL: http://programadoressv.blogspot.com/

    ResponderEliminar
  10. Recien leí esta publicacion y es informacion muy valiosa, gracias por compartir

    ResponderEliminar
  11. EXCELENTE APORTACION. GRACIAS

    ResponderEliminar
  12. Muy bien.
    Ahora una consulta... Cómo lo hago para respaldar más de una BD?

    Gracias.

    ResponderEliminar
    Respuestas
    1. publique respuesta mas abajo, me funcionó perfecto

      Eliminar
  13. Puedes hacer varios script y varios jobs.

    --
    Atte.
    Víctor Hugo Saavedra.

    ResponderEliminar
  14. Intenta esto para varias Bd, me lo encontre buscandole un poco


    DECLARE @name VARCHAR(50) -- database name
    DECLARE @path VARCHAR(256) -- path for backup files
    DECLARE @fileName VARCHAR(256) -- filename for backup
    DECLARE @fileDate VARCHAR(20) -- used for file name

    SET @path = 'C:\Backup\'

    SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)

    DECLARE db_cursor CURSOR FOR
    SELECT name
    FROM master.dbo.sysdatabases
    WHERE name NOT IN ('master','model','msdb','tempdb')

    OPEN db_cursor
    FETCH NEXT FROM db_cursor INTO @name

    WHILE @@FETCH_STATUS = 0
    BEGIN
    SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
    BACKUP DATABASE @name TO DISK = @fileName

    FETCH NEXT FROM db_cursor INTO @name
    END

    CLOSE db_cursor
    DEALLOCATE db_cursor


    Estoy en tsi_tecno@hotmail.com

    ResponderEliminar
  15. Gracias Anónimo! Me resolviste mi problema, porque todos manejan el mismo scrip pero más complicado y no sabía como cambiar algunas opciones hasta que vi el tuyo se me hizo más fácil.

    ResponderEliminar
  16. Hi there! I know this is somewhat off-topic however I had
    to ask. Does building a well-established blog such as yours require a lot of work?
    I'm brand new to running a blog but I do write in my journal daily. I'd like to
    start a blog so I can share my experience and thoughts online.
    Please let me know if you have any kind of ideas or tips for brand new aspiring bloggers.
    Appreciate it!
    My website :: hardcore sex

    ResponderEliminar
  17. Wonderful goods from you, man. I have understand your
    stuff previous to and you're just extremely magnificent. I actually like what you have acquired here, certainly like what you're saying and the way in which
    you say it. You make it enjoyable and you still care for to keep it smart.
    I cant wait to read much more from you. This is actually a tremendous web site.
    Here is my web page :: http://www.bhgalleries.com

    ResponderEliminar
  18. Everything is very open with a precise explanation of the challenges.
    It was definitely informative. Your website is useful.
    Thanks for sharing!
    My blog transvestite porn video

    ResponderEliminar
  19. What's up to all, how is all, I think every one is getting more from this web page, and your views are nice for new users.
    My web site porntube

    ResponderEliminar
  20. This text is invaluable. How can I find out more?
    Feel free to surf my web-site :: contractor in Orlando

    ResponderEliminar
  21. Can you tell us more about this? I'd like to find out more details.

    my web page widyawisatabanten.com

    ResponderEliminar
  22. bookmarked!!, I really like your web site!

    my homepage :: Burj Khalifa

    ResponderEliminar
  23. Amazing issues here. I'm very happy to peer your article. Thank you a lot and I am having a look forward to touch you. Will you kindly drop me a e-mail?

    Have a look at my blog post: www.obbf.De

    ResponderEliminar
  24. Awesome post.

    Feel free to visit my blog post reliablemall.com

    ResponderEliminar
  25. ahora ¿Cómo se hace para respaldar ciertas tablas de la base de datos?

    ResponderEliminar