none
Conectarme a Base de Datos Access 2013 protegida con contraseña desde VB.NET 2012 RRS feed

  • Pregunta

  • HOla

    Estoy desarrollando una app que debe guardar y esxtraer datos de una base de datos access que esta protegida con contraseña. utilizo este código para conectarme a la base de datos

            Using cnn As New OleDb.OleDbConnection()
                cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Temp_eBIM\eBIM2.accdb;Jet OLEDB:Database Password=malibido01;"
                Try
                    cnn.Open()
                    MsgBox("Conectado")
                Catch ex As Exception
                    MsgBox(ex.Message)
    
                    End
                End Try
            End Using

    pero me arroja este mensaje: No se puede abrir la base de datos ''. Es posible que su aplicación no reconozca este tipo de base de datos o que el archivo esté dañado.

    pero mi BD de access esta en buen estado porque puedo abrirla directamente desde access. no entiendo porque no puedo conectarme desde VB.NET

    cuando puse contraseña a mi base de datos access me salio este mensaje: El cifrado no es compatible con el bloqueo por filas, por lo que éste se omitiráPero puedo abrir la base de datos sin problemas usando la contraseña.

    Tal vez el problema sea ese alguien puede ayudarme con esto?

    Gracias.


    martes, 26 de abril de 2016 22:07

Respuestas

  • "MateoDeveloper" escribió:

    > Estoy desarrollando una app que debe guardar y esxtraer datos de una
    > base de datos access que esta protegida con contraseña ... pero me
    > arroja este mensaje: No se puede abrir la base de datos ''. Es posible
    > que su aplicación no reconozca este tipo de base de datos o que el archivo
    > esté dañado.
    >
    > pero mi BD de access esta en buen estado porque puedo abrirla directamente
    > desde access. cuando puse contraseña a mi base de datos access me salio
    > este mensaje: El cifrado no es compatible con el bloqueo por filas, por lo
    > que éste se omitirá. Pero puedo abrir la base de datos sin problemas usando
    > la contraseña.

    Hola:

    ¿Has cifrado tu base de datos de Access desde el propio Microsoft Access 2013 o superior? Si la respuesta es afirmativa, entiendo que podrás abrir la base de datos protegida desde tu aplicación de .NET, salvo que tu aplicación la hayas compilado para 32 bits y tengas instalados también en tu equipo los Componentes de Access 2007 disponibles solamente para 32 bits, cuando tu Microsoft Access 2013 o superior es de 64 bits.

    Si lo crees oportuno, responde a las siguientes preguntas:

    1º) ¿Con qué versión exacta de Microsoft Access has protegido tu base de datos?

    2º) Si hablamos de Microsoft Access 2010 o superior, ¿éste es de 32 o de 64 bits?

    3º) En el caso de tener instalado Microsoft Access 2010 o superior de 64 bits, ¿tienes instalada también una versión de los Componentes de acceso a datos de Access 2007?

    4º) ¿Para qué CPU de destino has compilado tu aplicación .NET? ¿Para x86, x64 o para AnyCPU?

    5º) La arquitectura de tu sistema operativo Microsoft Windows, ¿es de 32 o de 64 bits?

    6º) Si eliminas la contraseña de la base de datos, ¿puedes establecer satisfactoriamente la conexión desde tu aplicación .NET? Lo más seguro es que tampoco puedas abrirla aún estando desprotegida.

    Responde primero a cada una de las preguntas realizadas y después veremos lo que se puede hacer para solucionar el problema, aunque los detalles de la solución que te pueda ofrecer, pueden que sean los mismos que los que indico en el apartado Problemas de incompatibilidad al abrir con Access 2007 una base de datos protegida con Access 2010 o superior que encontrarás en el siguiente enlace:

    Cómo compactar una base de datos Access con formato 2007 - 2016

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.




    miércoles, 27 de abril de 2016 7:29
    Moderador
  • "MateoDeveloper" escribió:

    > 1.he protegido mi base de datos access con la version 2013
    > 2.uso la version de 65 bits
    >
    > 4.tengo compilado el .NET para Any CPU
    > 5.uso windows 10 - 64bits

    Si has compilado tu aplicación para Any CPU, y la estás ejecutando en tu Windows 10 de 64 bits, me vas a disculpar pero no observo inconveniente alguno para que obtengas el siguiente mensaje de error:

        No se puede abrir la base de datos ''. Es posible que su aplicación no reconozca
        este tipo de base de datos o que el archivo esté dañado.

    > 3.Tengo instalado este componente Microsoft Access database engine 2010(Spanish)
    > lo instale por recomendación de foros porque me aparecía un mensaje de error :
    > el proveedor Microsoft.ACE.OLEDB.12.0′ no está registrado en el equipo local.

    No has indicado si el Microsoft Access Database Engine 2010 es de 32 o de 64 bits, aunque si ya tienes instalado Access 2013 de 64 bits unido al mensaje de error que indicas, quiero entender que se corresponde con la versión de 32 bits, y seguramente lo instalastes para poder abrir la base de datos desde el Explorador de servidores del propio IDE de Visual Studio, ya que al ser éste un programa de 32 bits, no reconoce el proveedor Microsoft.ACE.OLEDB.12.0 de 64 bits que se registró en tu equipo al instalar Access 2013 de 64 bits. Aparte que si el Access 2010 fuera de 64 bits, quiero creer que el programa de instalación no te dejaría instalarlo al detectar que ya tienes instalada una versión de 64 bits de Access.

    De todas maneras, ejecutes tu aplicación en tu Windows 10 de 64 bits en modo de 32 o de 64 bits, insisto en que no deberías de tener problemas para abrir la base de datos de Access protegida en ese equipo con las características descritas. Diferente sería si la aplicación se ejecutara en un sistema operativo de 32 bits y tuvieras instalado el componente Microsoft Access Database Engine correspondiente a la versión de 2007 donde su sistema de protección es incompatible con el nuevo sistema de protección que se creó con Access 2010.

    Para salir de dudas, abre la base de datos desde el propio Access 2013, y vete a las Opciones de Access. Dirígete a la pestaña Configuración de cliente, y lee el valor que tienes en Método de cifrado. Si el valor es el que aparece señalado en rojo en la imagen de abajo, esa base de datos protegida solamente se podrá abrir con Access 2010 o superior, con independencia de la arquitectura de 32 o de 64 bits que se encuentre instalada en el equipo.

    Para poder abrir la base de datos en aquellos equipos que no dispongan del motor de Access correspondiente a la versión 2010 o superior, tienes que modificar el método de cifrado por defecto, seleccionando la opción Usar cifrado heredado, con lo que tu base de datos gozará de un sistema de cifrado inferior.

    > 6.si después de ponerle contraseña la quito y quiero conectarme de nuevo
    > desde .NET me aparece el mensaje que la BD esta dañada o no se puede conectar

    Ya lo intuí en mi anterior respuesta, cuando escribí:

    [...] 6º) Si eliminas la contraseña de la base de datos, ¿puedes establecer satisfactoriamente la conexión desde tu aplicación .NET? Lo más seguro es que tampoco puedas abrirla aún estando desprotegida. [...]

    El problema está en que cuando proteges la base de datos con Microsoft Access 2010 o superior, teniendo la opción de protección Usar cifrado predeterminado (mayor seguridad), la base de datos pasará a tener la versión dbVersion14 (éste es un valor de una enumeración de la biblioteca de DAO de Access), versión que seguirá teniendo aún quitándole la contraseña, de ahí que tampoco la puedas abrir si en el equipo no se encuentran instalados los Componentes de Access 2010 o superior, de ahí que me extraña muchísimo que recibas el error

        No se puede abrir la base de datos ''. Es posible que su aplicación no reconozca
        este tipo de base de datos o que el archivo esté dañado.

    cuando en tu equipo tienes instalado Access 2013 de 64 bits, y supuestamente Access 2010 de 32 bits.

    ¿Ese error lo obtienes en tu equipo o en algún otro equipo cliente?

    Nuevamente te remito a la lectura de los siguientes artículos:

    Cómo compactar una base de datos Access con formato 2007 - 2016

    Compatibilidad con versiones anteriores entre Access 2010 y Access 2007


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    martes, 10 de mayo de 2016 18:50
    Moderador

Todas las respuestas

  • Hola Mateo:

    Prueba con esta cadena:

     Cnn.connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = C:\Temp_eBIM\eBIM2\eBIM2.accdb;Jet OLEDB:Database Password='xxxxx'"

    Es decir, creo que te falta incluir entre comillas, el password.

    De todas formas, si la base de datos la inclutes en la carpeta Bin donde se aloja tu ejecutable, puedes sustituir el DataSource por: DataSource =  |DataDirectory|\eBIM2.accdb ... y por otro lado no te aconsejo que muestres el password de la misma, sustituyelo por xxxxx o lo que sea cuando realices preguntas en el foro.

    Un saludo.

    Gemma

    miércoles, 27 de abril de 2016 5:22
  • "MateoDeveloper" escribió:

    > Estoy desarrollando una app que debe guardar y esxtraer datos de una
    > base de datos access que esta protegida con contraseña ... pero me
    > arroja este mensaje: No se puede abrir la base de datos ''. Es posible
    > que su aplicación no reconozca este tipo de base de datos o que el archivo
    > esté dañado.
    >
    > pero mi BD de access esta en buen estado porque puedo abrirla directamente
    > desde access. cuando puse contraseña a mi base de datos access me salio
    > este mensaje: El cifrado no es compatible con el bloqueo por filas, por lo
    > que éste se omitirá. Pero puedo abrir la base de datos sin problemas usando
    > la contraseña.

    Hola:

    ¿Has cifrado tu base de datos de Access desde el propio Microsoft Access 2013 o superior? Si la respuesta es afirmativa, entiendo que podrás abrir la base de datos protegida desde tu aplicación de .NET, salvo que tu aplicación la hayas compilado para 32 bits y tengas instalados también en tu equipo los Componentes de Access 2007 disponibles solamente para 32 bits, cuando tu Microsoft Access 2013 o superior es de 64 bits.

    Si lo crees oportuno, responde a las siguientes preguntas:

    1º) ¿Con qué versión exacta de Microsoft Access has protegido tu base de datos?

    2º) Si hablamos de Microsoft Access 2010 o superior, ¿éste es de 32 o de 64 bits?

    3º) En el caso de tener instalado Microsoft Access 2010 o superior de 64 bits, ¿tienes instalada también una versión de los Componentes de acceso a datos de Access 2007?

    4º) ¿Para qué CPU de destino has compilado tu aplicación .NET? ¿Para x86, x64 o para AnyCPU?

    5º) La arquitectura de tu sistema operativo Microsoft Windows, ¿es de 32 o de 64 bits?

    6º) Si eliminas la contraseña de la base de datos, ¿puedes establecer satisfactoriamente la conexión desde tu aplicación .NET? Lo más seguro es que tampoco puedas abrirla aún estando desprotegida.

    Responde primero a cada una de las preguntas realizadas y después veremos lo que se puede hacer para solucionar el problema, aunque los detalles de la solución que te pueda ofrecer, pueden que sean los mismos que los que indico en el apartado Problemas de incompatibilidad al abrir con Access 2007 una base de datos protegida con Access 2010 o superior que encontrarás en el siguiente enlace:

    Cómo compactar una base de datos Access con formato 2007 - 2016

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.




    miércoles, 27 de abril de 2016 7:29
    Moderador
  • Hola Enrique

    Gracias por la respuesta te respondo las preguntas:

    1. he protegido mi base de datos access con la version 2013
    2. uso la version de 65 bits
    3. Tengo instalado este componente Microsoft Access database engine 2010(Spanish) lo instale por recomendación de foros porque me aparecía un mensaje de error : el proveedor Microsoft.ACE.OLEDB.12.0′ no está registrado en el equipo local.
    4. tengo compilado el .NET para Any CPU
    5. uso windows 10 - 64bits
    6. si después de ponerle contraseña la quito y quiero conectarme de nuevo desde .NET me aparece el mensaje que la BD esta dañada o no se puede conectar

    Gracias nuevamente por el apoyo

    martes, 10 de mayo de 2016 16:56
  • "MateoDeveloper" escribió:

    > 1.he protegido mi base de datos access con la version 2013
    > 2.uso la version de 65 bits
    >
    > 4.tengo compilado el .NET para Any CPU
    > 5.uso windows 10 - 64bits

    Si has compilado tu aplicación para Any CPU, y la estás ejecutando en tu Windows 10 de 64 bits, me vas a disculpar pero no observo inconveniente alguno para que obtengas el siguiente mensaje de error:

        No se puede abrir la base de datos ''. Es posible que su aplicación no reconozca
        este tipo de base de datos o que el archivo esté dañado.

    > 3.Tengo instalado este componente Microsoft Access database engine 2010(Spanish)
    > lo instale por recomendación de foros porque me aparecía un mensaje de error :
    > el proveedor Microsoft.ACE.OLEDB.12.0′ no está registrado en el equipo local.

    No has indicado si el Microsoft Access Database Engine 2010 es de 32 o de 64 bits, aunque si ya tienes instalado Access 2013 de 64 bits unido al mensaje de error que indicas, quiero entender que se corresponde con la versión de 32 bits, y seguramente lo instalastes para poder abrir la base de datos desde el Explorador de servidores del propio IDE de Visual Studio, ya que al ser éste un programa de 32 bits, no reconoce el proveedor Microsoft.ACE.OLEDB.12.0 de 64 bits que se registró en tu equipo al instalar Access 2013 de 64 bits. Aparte que si el Access 2010 fuera de 64 bits, quiero creer que el programa de instalación no te dejaría instalarlo al detectar que ya tienes instalada una versión de 64 bits de Access.

    De todas maneras, ejecutes tu aplicación en tu Windows 10 de 64 bits en modo de 32 o de 64 bits, insisto en que no deberías de tener problemas para abrir la base de datos de Access protegida en ese equipo con las características descritas. Diferente sería si la aplicación se ejecutara en un sistema operativo de 32 bits y tuvieras instalado el componente Microsoft Access Database Engine correspondiente a la versión de 2007 donde su sistema de protección es incompatible con el nuevo sistema de protección que se creó con Access 2010.

    Para salir de dudas, abre la base de datos desde el propio Access 2013, y vete a las Opciones de Access. Dirígete a la pestaña Configuración de cliente, y lee el valor que tienes en Método de cifrado. Si el valor es el que aparece señalado en rojo en la imagen de abajo, esa base de datos protegida solamente se podrá abrir con Access 2010 o superior, con independencia de la arquitectura de 32 o de 64 bits que se encuentre instalada en el equipo.

    Para poder abrir la base de datos en aquellos equipos que no dispongan del motor de Access correspondiente a la versión 2010 o superior, tienes que modificar el método de cifrado por defecto, seleccionando la opción Usar cifrado heredado, con lo que tu base de datos gozará de un sistema de cifrado inferior.

    > 6.si después de ponerle contraseña la quito y quiero conectarme de nuevo
    > desde .NET me aparece el mensaje que la BD esta dañada o no se puede conectar

    Ya lo intuí en mi anterior respuesta, cuando escribí:

    [...] 6º) Si eliminas la contraseña de la base de datos, ¿puedes establecer satisfactoriamente la conexión desde tu aplicación .NET? Lo más seguro es que tampoco puedas abrirla aún estando desprotegida. [...]

    El problema está en que cuando proteges la base de datos con Microsoft Access 2010 o superior, teniendo la opción de protección Usar cifrado predeterminado (mayor seguridad), la base de datos pasará a tener la versión dbVersion14 (éste es un valor de una enumeración de la biblioteca de DAO de Access), versión que seguirá teniendo aún quitándole la contraseña, de ahí que tampoco la puedas abrir si en el equipo no se encuentran instalados los Componentes de Access 2010 o superior, de ahí que me extraña muchísimo que recibas el error

        No se puede abrir la base de datos ''. Es posible que su aplicación no reconozca
        este tipo de base de datos o que el archivo esté dañado.

    cuando en tu equipo tienes instalado Access 2013 de 64 bits, y supuestamente Access 2010 de 32 bits.

    ¿Ese error lo obtienes en tu equipo o en algún otro equipo cliente?

    Nuevamente te remito a la lectura de los siguientes artículos:

    Cómo compactar una base de datos Access con formato 2007 - 2016

    Compatibilidad con versiones anteriores entre Access 2010 y Access 2007


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    martes, 10 de mayo de 2016 18:50
    Moderador