Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Permisos al usuario ASPNET que desaparecen

Estas en el tema de Permisos al usuario ASPNET que desaparecen en el foro de Bases de Datos General en Foros del Web. Muy buenas. Estoy manteniendo una intranet en la que las bases de datos de Access se encuentran en una carpeta fuera de las carpetas del ...
  #1 (permalink)  
Antiguo 04/06/2007, 05:49
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años
Puntos: 4
Permisos al usuario ASPNET que desaparecen

Muy buenas. Estoy manteniendo una intranet en la que las bases de datos de Access se encuentran en una carpeta fuera de las carpetas del servidor. Para que la intranet pueda trabajar con las bases de datos asigné permisos al usuario ASPNET. Sin embargo, sin que aparentemente se haya modificado nada, desaparece el usuario ASPNET de la lista de usuarios con permisos en esa carpeta, por lo que la intranet devuelve el error:

Código:
Error-2147467259: El motor de base de datos Microsoft Jet no puede abrir el archivo '\\SERVIDOR\BasesDatos\clientes.mdb'.
Está abierto en modo exclusivo por otro usuario o bien necesita permiso para ver sus datos.
Le asigno de nuevo los permisos y al rato desaparecen otra vez, cuando no se me queda colgada directamente la ventana de permisos.

¿Alguna ayuda o sugerencia?

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!

Última edición por BrujoNic; 04/06/2007 a las 07:41
  #2 (permalink)  
Antiguo 04/06/2007, 07:45
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Re: Permisos al usuario ASPNET que desaparecen

No creo que sea problemas de permisos a ese usuario. Si lees bien el mensaje, dice que clientes.mdb, está abierto en modo exclusivo. Eso quiere decir, que NO guardarte o configuraste clientes.mdb para que pudiera trabjarse en modo multiusuario o shared (compartido). Al abrirlo o accesarlo un solo usuario, bloquea el acceso a los demás.

Voy a mover tu consulta a la sección de BD para que te ayuden con eso y como consejo, trata de utilizar un motor de BD un poco más de verdad si vas a manejar volúmenes altos de datos o muchos usuarios. Access no fue diseñado para ese tipo de tareas.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 04/06/2007, 08:42
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 10 meses
Puntos: 7
Re: Permisos al usuario ASPNET que desaparecen

A mi me parece que es más error de programación que otra cosa, revisa si todas las conexiones que abres las cierras adecuadamente.

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #4 (permalink)  
Antiguo 05/06/2007, 00:40
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años
Puntos: 4
Re: Permisos al usuario ASPNET que desaparecen

Gracias a los dos por las respuestas. Casi estoy más de acuerdo con xknown porque todos los usuarios que tenían la base de datos abierta la cerraron (en ese momento eran sólo 3 y nunca suele haber más de 6 ó 7) y la aplicación ASP.Net seguía dando el mismo fallo.

Sigo insistiendo en el tema de los permisos porque cualquier base de datos Access a la que intentara conectar devolvía el mismo fallo. Ahora funciona sin problemas, aunque han vuelto a desaparecer los permisos.

Las conexiones las hago así (en un módulo aparte):

Código:
Public Class datosOLE

    Private con As OleDbConnection

    Public Sub New()
        Try
            con = New OleDbConnection(ConfigurationSettings.AppSettings("conOle"))
        Catch ex As OleDbException
            Throw New Exception("Error Ole" & ex.ErrorCode & ": " & ex.Message)
        End Try
    End Sub

    Public Sub New(ByVal constring As String)
        con = New OleDbConnection(constring)
    End Sub

    Public Function EjecutaNonQuery(ByVal strsql As String) As Integer

        Dim cmd As New OleDbCommand(strsql, con)
        Try
            con.Open()
            Dim n As Integer = cmd.ExecuteNonQuery
            Return n
        Catch ex As OleDbException
            Throw New Exception("Error Ole " & ex.ErrorCode & ": " & ex.Message)
        Finally
            If con.State.Open = ConnectionState.Open Then
                con.Close()
            End If
        End Try

        cmd.Dispose()

    End Function

    Public Function EjecutaScalar(ByVal strsql As String) As String

        Dim cmd As New OleDbCommand(strsql, con)
        Try
            con.Open()
            Dim obj As Object = cmd.ExecuteScalar
            If obj Is DBNull.Value Then obj = ""
            Return String.Format("{0}", obj)
        Catch ex As OleDbException
            Throw New Exception("Error" & ex.ErrorCode & ": " & ex.Message)
        Finally
            If con.State.Open = ConnectionState.Open Then
                con.Close()
            End If
        End Try

        cmd.Dispose()

    End Function

    Public Function DevuelveDT(ByVal strSQL As String) As DataTable
        Dim cmd As OleDbCommand
        Try
            cmd = New OleDbCommand(strSQL, con)
        Catch ex As OleDbException
            Throw New Exception("Error" & ex.ErrorCode & ": " & ex.Message)
        End Try
        Dim dt As New DataTable
        dt.Clear()

        Dim da As OleDbDataAdapter
        Try
            da = New OleDbDataAdapter(cmd)
        Catch ex As OleDbException
            Throw New Exception("Error" & ex.ErrorCode & ": " & ex.Message)
        End Try
        Try
            da.Fill(dt)
            Return dt
        Catch ex As OleDbException
            Throw New Exception("Error" & ex.ErrorCode & ": " & ex.Message)
        Finally
            If con.State.Open = ConnectionState.Open Then
                con.Close()
            End If
        End Try

        cmd.Dispose()
        da.Dispose()

    End Function

    Public Function DevuelveDS(ByVal strSQL As String) As DataSet
        Dim cmd As New OleDbCommand(strSQL, con)
        Dim ds As New DataSet
        ds.Clear()
        Dim da As New OleDbDataAdapter(cmd)
        Try
            da.Fill(ds)
            Return ds
        Catch ex As SqlException
            Throw New Exception("Error " & ex.Number & ": " & ex.Message)
        Finally
            If con.State.Open = ConnectionState.Open Then
                con.Close()
            End If
        End Try

        cmd.Dispose()
        da.Dispose()

    End Function
End Class
Por lo que en principio siempre las cierro.

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:10.