Servidores vinculados: conexión con Access
Hay muchas maneras de hacer que nuestro servidor SQL se conecte con otras bases de datos. Los asistentes para importar y exportar datos, los servicios de transformación de datos, los servidores vinculados… Vamos a ver un poco como funcionan los servidores vinculados con un sencillo ejemplo conectándonos a una base de datos de Access 2003.
Para conectarse a un origen de datos a través de un servidor vinculado solo necesitamos tener acceso al origen de datos y un proveedor OLE-DB adecuado.
Lo primero que necesitamos es tener la base de datos de Access. Crearemos una que se llamará ‘prueba.mdb’ con una tabla ‘personas’ que tiene de campos un ‘id’ autonumerico, un ‘nombre’ de tipo texto y un ‘apellido’ también de tipo texto. Colocaremos esta base de datos en ‘C:\’ y le introduciremos un par de filas de prueba.
El siguiente paso será añadir un servidor vinculado a nuestro SQL Server. Para ello desde el analizador de consultas utilizamos el procedimiento almacenado sp_addlinkedserver.
La sentencia será:
sp_addlinkedserver
@server = 'Prueba',
@provider = 'Microsoft.Jet.OLEDB.4.0',
@srvproduct = 'OLE DB Provider for Jet',
@datasrc = 'C:\prueba.mdb'
Si ahora miramos en el administrador corporativo en la carpeta de ‘seguridad’ en ‘servidores vinculados’ encontraremos un icono que representa nuestra conexión con la base de datos ‘prueba.mdb’.
El segundo paso será crear un login para validarnos en ese servidor vinculado. Para ello tenemos otro procedimiento almacenado, el ‘sp_addlinkedsrvlogin’.
EXEC sp_addlinkedsrvlogin
@rmtsrvname='Prueba',
@useself ='false'
En este ejemplo se crea una asignación para asegurar que todos los inicios de sesión al servidor local se conectan al del servidor vinculado ‘Prueba’ sin utilizar un inicio de sesión ni una contraseña en el servidor vinculado. Podemos hacer esto porque Access no requiere credenciales de inicio de sesión.
Ahora podemos comprobar de manera sencilla si nuestro trabajo ha dado resultado pidiendo por ejemplo todas las filas de la tabla ‘personas’.
select * from Prueba...personas
(Cuidado con el utilizar el nombre completo del objeto al que queremos acceder, los tres puntos son necesarios)
y el resultado obtenido será el contenido de esa tabla
Apellido Id Nombre
------------------ --------- -----------
Perez 1 Pedro
Garcia 2 Ana
(2 filas afectadas)
Y visto que funciona podemos utilizar esta tabla de Access en cualquier script que se nos ocurra. Por ejemplo para guardar copia de los nombres y apellidos de los empleados de ‘Northwind’ en nuestra tabla ‘Personas’.
INSERT INTO Prueba...Personas (Nombre, Apellido) SELECT FirstName,
LastName FROM Northwind..Employess
Como podéis comprobar utilizar servidores vinculados es un método potente de compartir información, y lo mejor es que podemos hacer esto con cualquier origen de datos para el que tengamos un proveedor OLE-DB!!