none
Linked Server a un fichero .MDB con password RRS feed

  • Pregunta

  • Hola:

    Tengo un fichero MDB con password al cual quiero acceder desde SqlServer. He seguido todos los pasos de instalar drivers, configurar, permisos, etc y consigo que la consulta funcione:

    select Count(*) FROM OPENDATASOURCE ('Microsoft.ACE.OLEDB.12.0',

    'Data Source=\\servidor\carpeta\fichero.mdb; Persist Security Info=False;JET OLEDB:DATABASE PASSWORD=ElPasswordCorrecto')...Tabla;

    Ahora quiero crear un Linked Server al fichero para no estar constantemente usando OPENDATASOURCE (además, está recomendado en https://msdn.microsoft.com/es-es/library/ms179856.aspx)

    Pues no consigo crear un Linked Server al .MDB que si puedo acceder con OPENDATASOURCE. Siempre me da el siguiente error:

    "[...]Error de autenticación[...] mensaje "Cannot start your application. The workgroup information file is missing or opened exclusively by another user." (Microsoft SQL Server, Error: 7399)"

    Obviamente, el .MDB no está abierto y tampoco necesita el fichero de usuario porque es contraseña de base de datos. Repito que la consulta OPENDATASOURCE funciona perfectamente.

    ¿Cómo crear un LinkedServer a un MDB con Password de base de datos y con el driver ACE.OLEDB.12.0?

    Editado:

    Si le quito la contraseña de la base de datos me funciona con:

    EXEC sp_addlinkedserver 
       @server = N'Test0', 
       @provider = N'Microsoft.ACE.OLEDB.12.0', 
       @srvproduct = N'OLE DB Provider for ACE',
       @datasrc = N'\\servidor\carpeta\SinPWD.mdb';
    
    EXEC sp_addlinkedsrvlogin  
        @rmtsrvname = 'Test0',
        @useself =  'FALSE' ,
        @rmtuser =  'Admin'  ,
        @rmtpassword =  NULL

    Si tiene password, no funciona lo siguiente:

    EXEC sp_addlinkedserver 
       @server = N'Test1', 
       @provider = N'Microsoft.ACE.OLEDB.12.0', 
       @srvproduct = N'OLE DB Provider for ACE',
       @datasrc = N'\\servidor\carpeta\ConPWD.mdb';
    
    EXEC sp_addlinkedsrvlogin  
        @rmtsrvname = 'Test1',
        @useself =  'FALSE' ,
        @rmtuser =  'Admin'  ,
        @rmtpassword =  'password'

    Un saludo







    • Editado LG DES miércoles, 1 de abril de 2015 7:36
    martes, 31 de marzo de 2015 9:27

Respuestas

  • Perfecto!!!

    Ahora si, solo hay que añadir el @provstr=';PWD=password'. Lo había probado pero sin los permisos de Admin, que son obligatorios también. Al final queda:

    EXEC sp_addlinkedserver 
       @server = N'Test0', 
       @provider = N'Microsoft.ACE.OLEDB.12.0', 
       @srvproduct = N'OLE DB Provider for ACE',
       @datasrc = N'\\servidor\carpeta\conPWD.mdb',
       @provstr= N';PWD=password';
    
    /* Aunque la BBDD tenga password, hay que añadir el usuario Admin sin password */
    
    EXEC sp_addlinkedsrvlogin  
        @rmtsrvname = 'Test0',
        @useself =  'FALSE' ,
        @rmtuser =  'Admin'  ,
        @rmtpassword =  NULL

    Gracias.

    • Marcado como respuesta LG DES miércoles, 1 de abril de 2015 15:50
    miércoles, 1 de abril de 2015 15:50

Todas las respuestas

  • LG DES,

    Buen dia! como estas? encontre esta documentacion que puede ayudarte:

    https://technet.microsoft.com/en-us/library/ms175866%28v=sql.105%29.aspx

    Tambien te adjunto otro link donde tuvieron problema con la version del conectar y solucionaron para el mismo

    http://stackoverflow.com/questions/5873673/sql-to-access-linked-server

    Espero te sirva!

    saludos!


    martes, 31 de marzo de 2015 12:12
  • Hola:

    Conectar se conecta bien, el problema es cuando el fichero .MDB tiene contraseña de base de datos.El primer link explica como acceder cuando tienes un fichero de seguridad (workgroup), pero este no es mi caso.

    Un saludo

    martes, 31 de marzo de 2015 13:47
  • Fijate este link explican como utilizar los parametros para access:

    http://www.aspfree.com/c/a/microsoft-access/configuring-a-linked-microsoft-access-server-on-sql-2005-server/

    PErdon la poca informacion pero tengo poca experiencia con bases Access.

    Espero te sirva!!

    saludos!!


    martes, 31 de marzo de 2015 15:58
  • Hola:

    Tampoco explica como conectarse a un MDB con password, que es lo que me interesa.

    miércoles, 1 de abril de 2015 7:35
  • Proba lo que hay en este link

    http://elbsolutions.com/projects/sql-server-access-ms-2010-access-database-password-finally/

    ojala te sirva!

    saludos!

    miércoles, 1 de abril de 2015 14:41
  • Perfecto!!!

    Ahora si, solo hay que añadir el @provstr=';PWD=password'. Lo había probado pero sin los permisos de Admin, que son obligatorios también. Al final queda:

    EXEC sp_addlinkedserver 
       @server = N'Test0', 
       @provider = N'Microsoft.ACE.OLEDB.12.0', 
       @srvproduct = N'OLE DB Provider for ACE',
       @datasrc = N'\\servidor\carpeta\conPWD.mdb',
       @provstr= N';PWD=password';
    
    /* Aunque la BBDD tenga password, hay que añadir el usuario Admin sin password */
    
    EXEC sp_addlinkedsrvlogin  
        @rmtsrvname = 'Test0',
        @useself =  'FALSE' ,
        @rmtuser =  'Admin'  ,
        @rmtpassword =  NULL

    Gracias.

    • Marcado como respuesta LG DES miércoles, 1 de abril de 2015 15:50
    miércoles, 1 de abril de 2015 15:50