none
Cómo Crear Backup de Base de datos Sql Server desde Aplicación Web en Servidor?

    Question

  • Cordial Saludo. Nuevamente haciendo consultas, de antemano agradezco su interes por ayudar.

    Estoy trabajando con vb asp.net en vs 2008 con mssql server 2008.

    El probelma es el siguiente, quiero que desde una opción en la  aplicación web corriendo desde el servidor pueda realizar un backup y un restore de la base de datos directamente desde un menú, ya lo tengo listo, pero funciona de forma local unicamente, obviamente porque la ruta que le doy es una de mi disco duro y al ejecutrase en el servidor que me provee el servicio de hosting pues buscará la  ruta en el servidor y pues no funciona. Lo que quiero es que busque la ruta en el equipo cliente y guarde la base de datos en el equipo cliente, así mismo que pueda hacerese un restore desde el equipo cliente. Este es el código que estoy utilizando, quisiera saber que le debo modificar para q me haga este proceso, supongo q la ruta o no se. Muchas Gracias por la ayuda.

    Try
    
    
    
                Using
    
     conec
                    conec.Close()
                    conec.Open()
                    cmndBackup.Cancel()
                    cmndBackup.Connection = conec
                    ruta = "C:\Backups\BaseDatos.bak"
    
    
                    rutaSql = "BACKUP DATABASE Soga2025 TO DISK='"
    
     & ruta & "'"
    
    
                    cmndBackup.CommandText = rutaSql
                    cmndBackup.ExecuteScalar()
                    MsgBox("Copia de seguridad creada exitosamente"
    
    , MsgBoxStyle.Information)
    
                End
    
     Using
    
    
    
    Wednesday, November 18, 2009 3:39 PM

Answers

  • hola

    y si lo desarrollas con la misma tecnica comentada en este otro post

    Crear backup de una base de datos
    http://social.msdn.microsoft.com/Forums/es-ES/winformses/thread/1d042e30-d3a6-489f-8e33-deccf6a57cc7


    como veras utiliza las librerias del propio sql server para crear el backup

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, November 18, 2009 4:44 PM

All replies

  • hola

    y si lo desarrollas con la misma tecnica comentada en este otro post

    Crear backup de una base de datos
    http://social.msdn.microsoft.com/Forums/es-ES/winformses/thread/1d042e30-d3a6-489f-8e33-deccf6a57cc7


    como veras utiliza las librerias del propio sql server para crear el backup

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, November 18, 2009 4:44 PM
  • Se me ocurre que asi como lo tienes guardes el backup en una carpeta temporal en el server y se lo mandes al cliente y el lo guarde. Con el codigo que te muestro solo tienes que poner el archivo en una variable byte[] y el explorador te manda el cuadro de descarga como si fuera ftp.

    byte[] byteRespaldo = (byte[])Session["byteDocumento"];
    Response.Clear();
    Response.AppendHeader("content-disposition", "attachment; filename=respaldo.bak");
    Response.BinaryWrite(byteRespaldo);
    Response.End();

    Para hacer la restauracion usa un file upload para que el usuario seleccione el archivo y lo subas a la capeta temporal del server y luego haces el restore. Para subir el archivo checa este link
     http://social.msdn.microsoft.com/Forums/es-ES/netfxwebes/thread/34713ca0-dfc7-4d7f-a77e-7c668eb8a1b3/#7ee0d02b-9e25-4bfe-b89c-a1b30022ef1b

    Wednesday, November 18, 2009 5:39 PM
  • Cordial saludo. Disculpen la demora en responder. Leandro gracias, pero me parece que la solución que dan en ese foro es para hacer el proceso de forma local (no se si estoy mal). El proceso necesario es adaptarle una opción a la aplicación web, en la que el cliente desde su navegador web vía Internet, de clic en un botón que diga "crear copia de seguridad" y se descargue automáticamente a su computador el .bak u otro archivo como backup de la base de datos para tenerlo almacenado en su equipo. De la misma forma que pueda hacer un restore, con un botón con la opción "restaurar copia de seguridad", se abra el explorador y busque el .bak de la base de datos u otro archivo para poder restaurarla automáticamente. No se si es mucho pedir o si es un proceso muy complejo, se que yo puedo hacerlo desde el administrador del hosting, pero la idea es q se haga desde la aplicación web. Agradezco tan valiosa ayuda.
    Wednesday, December 09, 2009 3:53 PM
  • ya intentaste hacerlo como te propuse en mi respuesta anterior???

    Es facil intentalo. Ya tienes el proceso para hacer el repaldo lo unico que tienes que hacer es que el usuario descargue en su pc el archivo y luego pueda subirlo al server.
    Wednesday, December 09, 2009 8:08 PM
  • Cordial saludo aelp. Bueno pues lo que he intentado para seguir estos pasos es crear el directorio virtual en el admin del hosting (plesk panel) y bueno me deja crear un dir pero allí no se que más hacer, pues no sabria la ruta de este directorio, y ps de echo no soy muy experto y no se cómo sería el proceso de: "guardes el backup en una carpeta temporal en el server y se lo mandes al cliente y el lo guarde", se me ocurre que creo el dir virtual en el admin del hosting, de alguna forma ubico la ruta y esa es la que asigno a  ruta = "rutaDirVirtual"  en mi código. o sino utilizo la instrucción que me das  "byte[] byteRespaldo = (byte[])Session["byteDocumento"];" se supone que byteDocumento es el archivo .bak de la bd, pero pues para esto supongo que antes debería haber generado el .bak y posicionar el archivo allí manualmente, pero la idea es q el usuario únicamente deba dar clic en "generar copia de seguridad" y se descargue el .bak del servidor web sin hacer nada adicional y que de igual forma se pueda hacer el restore. Aclaro que el servidor web es un servicio contratado con un proveedor de hosting, por eso no tengo acceso total. Agradezco muchísimo la ayuda brindada y quedo a la espera, mil gracias de antemano.
    Wednesday, December 09, 2009 11:31 PM
  • Hola geovany13 como estas, yo tengo exactamente el mismo detalle que tu, deso solo esa parte de código o sugerencia para poder descargar el archivo .bak a la PC remota. La diferencia es que mi código es solo ASP y necesito hacer un respaldo de la base de datos actual y descargarla a mi PC. Si encuentras algo referente a esto por favor te ruego lo publiques me sirvira mucho de ayuda ya que tengo días buscando y buscando y esto es lo que mas se acerca a la situación en la que estoy.

    Saludos.
    Wednesday, December 23, 2009 3:17 AM
  • Revisa lo que sugeri en este mismo foro el dia miércoles, 18 de noviembre de 2009 17:39.

    Es muy facil abrir el cuadro de descarga para que el cliente baje un archivo si tienes dudas sobre mi codigo con gusto te las aclaro

    Thursday, December 24, 2009 7:10 PM
  • con este codigo copias un archivo de un cuadro de dialogo (objeto uploadFile) del cliente a el servidor, a ver si te sirve! creo no neceseriamente tiene que ser un uploadfile, pruebalo con los otros objetos de archivos para evitar que el usuario tenga que descargarlo y volverlo a subir.

     


    Try

     

    Dim postedFile = UploadFile.PostedFile

     

    Dim filename As String = Path.GetFileName(postedFile.FileName) 'aqui va la ruta de la carpeta donde se guarda en el cliente

     

    Dim contentType As String = postedFile.ContentType

     

    Dim contentLength As Integer = postedFile.ContentLength

    postedFile.SaveAs(savePath & ext)

    'aqui va la ruta de la carpeta donde se guarda en servidor

     

    Catch exc As Exception

     

    End Try

    Thursday, December 31, 2009 3:55 PM