none
Error copia de seguridad SqlServer Express RRS feed

  • Pregunta

  • Hola a todos:

    Estoy obteniendo el error siguiente al realizar un backup desde código de una base de datos sqlserver express.

    Se produjo la excepción System.Data.SqlClient.SqlException.
      HResult=0x80131904
      Mensaje = No se puede abrir el dispositivo de copia de seguridad 'C:\Users\Rafael\Documents\Visual Studio 2015\Projects\FinancialSystem2016\FinancialSystem\bin\Debug\Backup\PerseoSqlEx_11_7_2017.bak'. Error de sistema operativo 5(Acceso denegado.).
    Fin anómalo de BACKUP DATABASE.
      Origen = .Net SqlClient Data Provider
      Seguimiento de la pila:
       en System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
       en System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
       en System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
       en System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
       en System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
       en System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
       en System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
       en FinancialSystem.frmCopiaSeguridad.CrearCopiaSqlserver() en C:\Users\Rafael\Documents\Visual Studio 2015\Projects\FinancialSystem2016\FinancialSystem\Forms\frmCopiaSeguridad.vb: línea 79
       en FinancialSystem.frmCopiaSeguridad.BtnCrearCopia_Click(Object sender, EventArgs e) en C:\Users\Rafael\Documents\Visual Studio 2015\Projects\FinancialSystem2016\FinancialSystem\Forms\frmCopiaSeguridad.vb: línea 177
       en System.Windows.Forms.Control.OnClick(EventArgs e)
       en Softgroup.NetButton.NetButton.OnClick(EventArgs e)
       en System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       en System.Windows.Forms.Control.WndProc(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    Private Sub CrearCopiaSqlserver()
    
            'Crea un respaldo de una base de datos de SQL server, en la variable v_nombre_respaldo indico el nombre del backup agregando la fecha en que se esta creando para evitar duplicidad en los respaldos.  
            'NOMBRE_BD es el nombre de la base de datos a respaldar.
    
            Dim v_nombre_respaldo As String = "PerseoSqlEx_" & Now.Day & "_" & Now.Month & "_" & Now.Year & ".bak"
            Dim v_ruta_destino As String = (IO.Path.Combine(Application.StartupPath, "Backup", v_nombre_respaldo))
            lblOrigen.Text = v_ruta_destino
            Using conexion As New SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=PerseoSqlEx;Integrated Security=true")
                Dim cmd As SqlCommand = conexion.CreateCommand()
                cmd.CommandText = String.Format("BACKUP DATABASE PerseoSqlEx TO DISK = '{0}'", v_ruta_destino)
                conexion.Open()
                cmd.ExecuteNonQuery()
            End Using
        End Sub

    La carpeta evidentemente existe en dicha ruta, pero me da el error. No se si se tendría que borrar la anterior copia de seguridad.

    Un saludo.

    Gemma

    martes, 11 de julio de 2017 7:10

Respuestas

  • Hola Gemma, el usuario que levanta los servicios de SQL Server Express tiene que tener permiso y acceso a esa carpeta, por otra parte esa carpeta ha de ser local al servidor donde esté el sql, no a la máquina que la ejecuta. 

    Si cumples ambas condiciones no obtendrás un "Error 5" acceso denegado


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    • Marcado como respuesta gemma_campillo martes, 11 de julio de 2017 7:52
    martes, 11 de julio de 2017 7:28
    Moderador

Todas las respuestas

  • Hola Gemma, el usuario que levanta los servicios de SQL Server Express tiene que tener permiso y acceso a esa carpeta, por otra parte esa carpeta ha de ser local al servidor donde esté el sql, no a la máquina que la ejecuta. 

    Si cumples ambas condiciones no obtendrás un "Error 5" acceso denegado


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    • Marcado como respuesta gemma_campillo martes, 11 de julio de 2017 7:52
    martes, 11 de julio de 2017 7:28
    Moderador
  • Hola Miguel, buenos días.

    De acuerdo con lo que me indicas. Tomo nota y voy a cambiar lo que tengo para que funcione.

    Muchas gracias querido Miguel.

    Un abrazo.

    Gemma

    martes, 11 de julio de 2017 7:52