none
cadena de conexion y contraseña RRS feed

  • Pregunta

  • Estoy desarrollando una aplicacion vb.net conectando con una base de datos access 2010.

    Actualmente me conecto a ella usando la cadena:

     conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & value & "\Ventas.accdb;Persist Security Info=False"

    Quiero agregar seguridad a la base de datos poniendole una contraseña

    Mis dudas son

    ¿Como puedo poner la contraseña para que la base de datos no pueda ser abierta directamente por los usuarios?

    ¿Que modificacion tengo que hacer a la cadena de coneccion para que pueda abrir sin problema al conectarme con la aplicacion?

    De antemano gracias por su ayuda

    martes, 3 de noviembre de 2015 20:22

Respuestas

  • Según apuntan aquí:

    Access 2007 connection strings

    Con el cifrado por defecto de Access 2010-2013 no funciona bien la cadena de conexión. Lo que recomiendan es al cifrar elegir como método de cifrado el de Access 2007.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    miércoles, 4 de noviembre de 2015 8:02
  • "hector barajas" escribió:

    > Estoy desarrollando una aplicacion vb.net conectando con una base de datos access 2010.
    >
    > He intentando con las cadenas que mencionas pero me da el error:
    >
    > "No se puede abrir la base de datos". Es posible que su aplicacion no reconozca este
    > tipo de base de datos o que el archivo este dañado"
    >
    > Para ponerle la contraseña abri la base de datos en modo exclusivo y le di cifrar con
    > contraseña y al intentar conectarme no me deja abrirla.
    >
    > Si alguien sabe como resolver el problema se lo agradeceria

    Hola, Héctor:

    Entiendo que habrás incluido en tu cadena de conexión el parámetro Jet OLEDB:Database Password para especificar la contraseña de la base de datos:

        conn.ConnectionString = _
          "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & value & _
          "\Ventas.accdb;Persist Security Info=False;Jet OLEDB:Database Password=contraseña;

    Si has cifrado con una contraseña una base de datos de Access versión 2010 o superior, en principio ese archivo de base de datos solamente se podrá abrir en aquellos equipos que tengan instalado Access 2010 o superior. Si el equipo cliente tiene instalado Access 2007, esa base de datos cifrada con Access 2010 o superior NO SE PODRÁ ABRIR, obteniendo el error que has descrito:

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

    Introducción a la seguridad de Access 2010

    Compatibilidad con versiones anteriores entre Access 2010 y Access 2007

    ¿El equipo donde recibes el error tiene instalado los objetos de acceso a datos correspondiente a Access 2010 o superior? Si no los tiene instalados, tendrías que abrir las Opciones de Access 2010 o superior y modificar el método de cifrado predeterminado para proporcionar compatibilidad inversa, tal y como muestra la siguiente captura de las Opciones de Access 2013:


    Una vez modificado el método de cifrado, tendrías que volver a cifrar la base de datos para que ésta pueda ser abierta desde Access 2007, teniendo en cuenta que la base de datos que ya has cifrado con Access 2010 no vas a poderle modificar su método de cifrado, aunque la descifres y posteriormente la vuelvas a cifrar utilizando el cifrado heredado, ya que la versión del archivo será la 14.0, versión ésta que desde luego no es reconocida por Access 2007 cuyos archivos de bases de datos tienen la versión 12.0. Tienes que crear una nueva base de datos en blanco, importar las tablas, consultas y restantes objetos que necesites, y cifrar la contraseña utilizando el cifrado heredado.

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    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, 4 de noviembre de 2015 8:09
    Moderador

Todas las respuestas

  • Cuando tengas dudas sobre cadenas de conexión te recomiendo la página:

    The Connection Strings Reference

    En concreto tienes ejemplos de Access en Access connection strings

    Ahí tienes ejemplos de cadenas utilizando diferentes proveedores de datos y acceso de seguridad.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    martes, 3 de noviembre de 2015 20:26
  • He intentando con las cadenas que mencionas pero me da el error:

    "No se puede abrir la base de datos". Es posible que su aplicacion no reconozca este tipo de base de datos o que el archivo este dañado"

    Para ponerle la contraseña abri la base de datos en modo exclusivo y le di cifrar con contraseña y al intentar conectarme no me deja abrirla.

    Si alguien sabe como resolver el problema se lo agradeceria

    martes, 3 de noviembre de 2015 22:26
  • Según apuntan aquí:

    Access 2007 connection strings

    Con el cifrado por defecto de Access 2010-2013 no funciona bien la cadena de conexión. Lo que recomiendan es al cifrar elegir como método de cifrado el de Access 2007.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    miércoles, 4 de noviembre de 2015 8:02
  • "hector barajas" escribió:

    > Estoy desarrollando una aplicacion vb.net conectando con una base de datos access 2010.
    >
    > He intentando con las cadenas que mencionas pero me da el error:
    >
    > "No se puede abrir la base de datos". Es posible que su aplicacion no reconozca este
    > tipo de base de datos o que el archivo este dañado"
    >
    > Para ponerle la contraseña abri la base de datos en modo exclusivo y le di cifrar con
    > contraseña y al intentar conectarme no me deja abrirla.
    >
    > Si alguien sabe como resolver el problema se lo agradeceria

    Hola, Héctor:

    Entiendo que habrás incluido en tu cadena de conexión el parámetro Jet OLEDB:Database Password para especificar la contraseña de la base de datos:

        conn.ConnectionString = _
          "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & value & _
          "\Ventas.accdb;Persist Security Info=False;Jet OLEDB:Database Password=contraseña;

    Si has cifrado con una contraseña una base de datos de Access versión 2010 o superior, en principio ese archivo de base de datos solamente se podrá abrir en aquellos equipos que tengan instalado Access 2010 o superior. Si el equipo cliente tiene instalado Access 2007, esa base de datos cifrada con Access 2010 o superior NO SE PODRÁ ABRIR, obteniendo el error que has descrito:

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

    Introducción a la seguridad de Access 2010

    Compatibilidad con versiones anteriores entre Access 2010 y Access 2007

    ¿El equipo donde recibes el error tiene instalado los objetos de acceso a datos correspondiente a Access 2010 o superior? Si no los tiene instalados, tendrías que abrir las Opciones de Access 2010 o superior y modificar el método de cifrado predeterminado para proporcionar compatibilidad inversa, tal y como muestra la siguiente captura de las Opciones de Access 2013:


    Una vez modificado el método de cifrado, tendrías que volver a cifrar la base de datos para que ésta pueda ser abierta desde Access 2007, teniendo en cuenta que la base de datos que ya has cifrado con Access 2010 no vas a poderle modificar su método de cifrado, aunque la descifres y posteriormente la vuelvas a cifrar utilizando el cifrado heredado, ya que la versión del archivo será la 14.0, versión ésta que desde luego no es reconocida por Access 2007 cuyos archivos de bases de datos tienen la versión 12.0. Tienes que crear una nueva base de datos en blanco, importar las tablas, consultas y restantes objetos que necesites, y cifrar la contraseña utilizando el cifrado heredado.

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    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, 4 de noviembre de 2015 8:09
    Moderador