Conectar Linked Server SQL SERVER 2012 a base de datos de access remota con clave de acceso

Recientemente me ha tocado configurar un linked server desde SQL SERVER 2012 hacia un archivo de access — sí, todavía hay aplicaciones que utilizan ese tipo de archivo–. No debería ser una tarea muy compleja pero hay un detalle interesante que puede provocarle a más de alguno un dolor de cabeza temporal.

Recomiendo crear el linked server mediante código ya que por medio de la ventada podría ser algo confuso.

Crear el Linked Server

/* Crear el Linked Server*/

EXEC sp_addlinkedserver 
   @server = N'Test', 
   @provider = N'Microsoft.ACE.OLEDB.12.0', 
   @srvproduct = N'OLE DB Provider for ACE',
   @datasrc = N'\\ruta\del\archivo.mdb',
   @provstr= N';PWD=contraseña';

Detalle de parámetros

@server: Nombre del linked server

@provider: Proveedor que dará el acceso al archivo de access, en la versión de SQL SERVER 2012 ya viene incluido, en versiones anteriores habrá que descargarlo

@srvproduct: Nombre del producto, para fines prácticos dejarlo igual

@datasrc: Ruta donde se encuentra el archivo mdb

@provstr: Clave con la que está protegido el archivo mdb.

Crear el login del Linked Server

/* Aunque la BBDD tenga password, hay que añadir el usuario Admin sin password */

EXEC sp_addlinkedsrvlogin  
    @rmtsrvname = 'Test',
    @useself =  'FALSE' ,
    @rmtuser =  'Admin'  ,
    @rmtpassword =  NULL

El punto raro de esto es que en el parámetro @rmtpassword se debe enviar el valor NULL, de lo contrario no funcionará la conexión, la contraseña se envía en el parámetro @provstr de la creación del linked server.

Detalle de parámetros

@rmtsrvname: Nombre del linked server creado arriba

@useself: Determina si se quiere impersonar el usuario (hacerse pasar por), en este caso enviamos FALSO.

@rmtuser: nombre de usuario del archivo mdb.

@rmtpassword: clave del archivo, para este tipo de conexión en específico enviar NULL ya que la clave ha sido enviada en el parámetro @provstr de la creacion del linked server.

Observaciones adicionales

Asegurarse de que el usuario con el que se ejecuta el servicio de SQL SERVER tenga acceso a la carpeta donde se encuentra el archivo que se va a leer, es muy común que al no tener permiso este usuario, el linked server devuelva varios mensajes de error.

 



 

 

 

Ultimas entradas

Deja un comentario

Tu dirección de correo electrónico no será publicada.