Share via


Consideraciones acerca de los servidores vinculados en servidores agrupados SQL Server

Cuando configure servidores vinculados en un servidor clúster SQL Server utilizando proveedores OLE DB que no se distribuyen con SQL Server, asegúrese de que los proveedores OLE DB estén instalados en todos los nodos del clúster. Asimismo, la ubicación debe ser transparente en cualquier propiedad que defina el servidor vinculado, es decir, no debe contener información que asuma que SQL Server se ejecuta siempre en un nodo determinado del clúster.

En este ejemplo se define un servidor vinculado en un servidor que ejecuta SQL Server y hace referencia a una de las tablas remotas con un nombre de cuatro partes en una instrucción SELECT. (El uso de SQLNCLI y SQL Server redirigirá a la última versión del proveedor OLE DB de SQL Server Native Client).

sp_addlinkedserver @server = N'LinkServer',
    @srvproduct = N' ',
    @provider = N'SQLNCLI', 
    @datasrc = N'ServerNetName', 
    @catalog = N'AdventureWorks2008R2'
GO
SELECT *
FROM LinkServer.AdventureWorks2008R2.HumanResources.Employee
GO

Servidores vinculados en un bucle invertido

Es posible definir servidores vinculados que señalen al servidor donde se han definido, es decir, que operen como bucle invertido. Los servidores en bucle invertido resultan muy útiles cuando se prueba una aplicación que utiliza consultas distribuidas en una red con un único servidor.

Por ejemplo, si se ejecuta el siguiente procedimiento almacenado sp_addlinkedserver en un servidor denominado MyServer define un servidor vinculado en bucle invertido:

sp_addlinkedserver @server = N'MyLink',
    @srvproduct = N' ',
    @provider = N'SQLNCLI', 
    @datasrc = N'MyServer', 
    @catalog = N'AdventureWorks2008R2'
GO

Las instrucciones Transact-SQL que utilizan MyLink como nombre de servidor pasan a través del proveedor SQLNCLI y vuelven al servidor local.

Los servidores vinculados en bucle invertido no se pueden utilizar en transacciones distribuidas. Si se intenta una consulta distribuida en un servidor vinculado en bucle invertido desde una transacción distribuida, se produce un error, como el error 3910: "[Microsoft][controlador ODBC SQL Server][SQL Server]Contexto de transacción en uso por otra sesión". Esta restricción no se aplica cuando una instrucción INSERT... EXECUTE, emitida por una conexión que no tiene habilitados los conjuntos de resultados activos múltiples (MARS), se ejecuta en un servidor vinculado de bucle invertido. Observe que la restricción se sigue aplicando cuando MARS está habilitado en una conexión.