Servidores vinculados (motor de base de datos)Linked Servers (Database Engine)

Configure un servidor vinculado para habilitar a Motor de base de datos de SQL ServerSQL Server Database Engine para que ejecute comandos en orígenes de datos OLE DB fuera de la instancia de SQL ServerSQL Server.Configure a linked server to enable the Motor de base de datos de SQL ServerSQL Server Database Engine to execute commands against OLE DB data sources outside of the instance of SQL ServerSQL Server. Los servidores vinculados normalmente se configuran para habilitar Motor de base de datosDatabase Engine a fin de ejecutar una instrucción Transact-SQLTransact-SQL que incluye las tablas de otra instancia de SQL ServerSQL Serveru otro producto de base de datos como Oracle.Typically linked servers are configured to enable the Motor de base de datosDatabase Engine to execute a Transact-SQLTransact-SQL statement that includes tables in another instance of SQL ServerSQL Server, or another database product such as Oracle. Muchos orígenes de datos OLE DB de tipos pueden configurarse como servidores vinculados, incluidos MicrosoftMicrosoft Access y Excel.Many types OLE DB data sources can be configured as linked servers, including MicrosoftMicrosoft Access and Excel. Los servidores vinculados ofrecen las siguientes ventajas:Linked servers offer the following advantages:

  • Capacidad de obtener acceso a datos fuera de SQL ServerSQL Server.The ability to access data from outside of SQL ServerSQL Server.

  • Capacidad de ejecutar consultas distribuidas, actualizaciones, comandos y transacciones en orígenes de datos heterogéneos en toda la organización.The ability to issue distributed queries, updates, commands, and transactions on heterogeneous data sources across the enterprise.

  • Capacidad de tratar diferentes orígenes de datos de manera similar.The ability to address diverse data sources similarly.

Puede configurar un servidor vinculado con SQL Server Management StudioSQL Server Management Studio o con la instrucción sp_addlinkedserver (Transact-SQL) .You can configure a linked server by using SQL Server Management StudioSQL Server Management Studio or by using the sp_addlinkedserver (Transact-SQL) statement. Los proveedores OLE DB varían en gran medida en el tipo y el número de parámetros necesarios.OLE DB providers vary greatly in the type and number of parameters required. Por ejemplo, algunos proveedores requieren que proporcione un contexto de seguridad para la conexión con sp_addlinkedsrvlogin (Transact-SQL).For example some providers require you to provide a security context for the connection using sp_addlinkedsrvlogin (Transact-SQL). Algunos proveedores OLE DB que permiten SQL ServerSQL Server actualizar datos en el origen de OLE DB.Some OLE DB providers allow SQL ServerSQL Server to update data on the OLE DB source. Otros solo proporcionan acceso a datos de solo lectura.Others provide only read-only data access. Para obtener información acerca de cada proveedor OLE DB, consulte la documentación para dicho proveedor OLE DB.For information about each OLE DB provider, consult documentation for that OLE DB provider.

Componentes de servidores vinculadosLinked Server Components

Una definición de servidor vinculado especifica los siguientes objetos:A linked server definition specifies the following objects:

  • Un proveedor OLE DBAn OLE DB provider

  • Un origen de datos OLE DBAn OLE DB data source

Un proveedor OLE DB es una biblioteca DLL que administra un origen de datos específico e interactúa con él.An OLE DB provider is a DLL that manages and interacts with a specific data source. Un origen de datos OLE DB identifica la base datos específica a la que se puede tener acceso mediante OLE DB.An OLE DB data source identifies the specific database that can be accessed through OLE DB. Aunque los orígenes de datos en los que se realizan consultas a través de definiciones de servidores vinculados son bases de datos normales, existen proveedores OLE DB para una amplia variedad de archivos y formatos de archivo.Although data sources queried through linked server definitions are ordinarily databases, OLE DB providers exist for a variety of files and file formats. Se trata de archivos de texto, datos de hojas de cálculo y los resultados de búsquedas de contenido de texto completo.These include text files, spreadsheet data, and the results of full-text content searches.

El MicrosoftMicrosoft SQL ServerSQL Server proveedor de OLE DB de Native Client (ProgID: SQLNCLI11) es el proveedor de SQL ServerSQL ServerOLE DB oficial para.The MicrosoftMicrosoft SQL ServerSQL Server Native Client OLE DB Provider (PROGID: SQLNCLI11) is the official OLE DB provider for SQL ServerSQL Server.

Nota

SQL ServerSQL Server están diseñadas para ser usadas con cualquier proveedor OLE DB que implemente las interfaces OLE DB requeridas.distributed queries are designed to work with any OLE DB provider that implements the required OLE DB interfaces. Sin embargo, SQL ServerSQL Server solo se ha probado con el proveedor OLE DB de SQL ServerSQL Server Native Client y algunos otros.However, SQL ServerSQL Server has been tested against only the SQL ServerSQL Server Native Client OLE DB Provider and certain other providers.

Detalles de servidores vinculadosLinked Server Details

En la siguiente ilustración se muestran los conceptos básicos de una configuración con servidores vinculados.The following illustration shows the basics of a linked server configuration.

Nivel de cliente, nivel de servidor y nivel de servidor de base de datosClient tier, server tier, and database server tier

Normalmente, los servidores vinculados se utilizan para tratar consultas distribuidas.Typically, linked servers are used to handle distributed queries. Cuando una aplicación cliente ejecuta una consulta distribuida mediante un servidor vinculado, SQL ServerSQL Server analiza el comando y envía solicitudes a OLE DB.When a client application executes a distributed query through a linked server, SQL ServerSQL Server parses the command and sends requests to OLE DB. La solicitud de conjuntos de filas se puede realizar como una consulta al proveedor o abriendo una tabla base del proveedor.The rowset request may be in the form of executing a query against the provider or opening a base table from the provider.

Para que un origen de datos devuelva información mediante un servidor vinculado, el proveedor OLE DB (DLL) para ese origen de datos debe encontrarse en el mismo servidor que la instancia de SQL ServerSQL Server.For a data source to return data through a linked server, the OLE DB provider (DLL) for that data source must be present on the same server as the instance of SQL ServerSQL Server.

Cuando se utiliza un proveedor OLE DB de otro fabricante, la cuenta con la que se ejecuta el servicio de SQL ServerSQL Server debe tener permisos de lectura y ejecución para el directorio y todos los subdirectorios en los que esté instalado el proveedor.When a third-party OLE DB provider is used, the account under which the SQL ServerSQL Server service runs must have read and execute permissions for the directory, and all subdirectories, in which the provider is installed.

Administrar proveedoresManaging Providers

Existe un conjunto de opciones para controlar cómo SQL ServerSQL Server carga y utiliza proveedores OLE DB que se hayan especificado en el registro.There is a set of options that control how SQL ServerSQL Server loads and uses OLE DB providers that are specified in the registry.

Administrar definiciones de servidores vinculadosManaging Linked Server Definitions

Cuando configure un servidor vinculado, registre la información de la conexión y del origen de datos con SQL ServerSQL Server.When you are setting up a linked server, register the connection information and data source information with SQL ServerSQL Server. Una vez realizado el registro, se puede hacer referencia a ese origen de datos con un único nombre lógico.After registered, that data source can be referred to with a single logical name.

Puede utilizar procedimientos almacenados y vistas de catálogo para administrar definiciones de servidores vinculados:You can use stored procedures and catalog views to manage linked server definitions:

  • Cree una definición de servidor vinculado mediante la ejecución de sp_addlinkedserver.Create a linked server definition by running sp_addlinkedserver.

  • Vea información acerca de los servidores vinculados definidos en una instancia específica de SQL ServerSQL Server ejecutando una consulta en las vistas de catálogo del sistema sys.servers .View information about the linked servers defined in a specific instance of SQL ServerSQL Server by running a query against the sys.servers system catalog views.

  • Elimine una definición de servidor vinculado mediante la ejecución de sp_dropserver.Delete a linked server definition by running sp_dropserver. También puede utilizar este procedimiento almacenado para quitar servidores remotos.You can also use this stored procedure to remove a remote server.

También puede definir servidores vinculados mediante SQL Server Management StudioSQL Server Management Studio.You can also define linked servers by using SQL Server Management StudioSQL Server Management Studio. En el Explorador de objetos, haga clic con el botón derecho en Objetos de servidor, seleccione Nuevoy, después, Servidor vinculado.In the Object Explorer, right-click Server Objects, select New, and select Linked Server. Puede eliminar una definición de servidor vinculado al hacer clic con el botón derecho en el nombre del servidor vinculado y seleccionar Eliminar.You can delete a linked server definition by right-clicking the linked server name and selecting Delete.

Cuando ejecute una consulta distribuida en un servidor vinculado, incluya el nombre de cuatro partes completo de una tabla para cada origen de datos en el que desee realizar la consulta.When you execute a distributed query against a linked server, include a fully qualified, four-part table name for each data source to query. Este nombre de cuatro partes debe tener el formato linked_server_name. Catalogschema.. object_name.This four-part name should be in the form linked_server_name.catalog.schema.object_name.

Nota

Es posible definir servidores vinculados que señalen al servidor donde se han definido, es decir, que operen como bucle invertido.Linked servers can be defined to point back (loop back) to the server on which they are defined. 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.Loopback servers are most useful when testing an application that uses distributed queries on a single server network. Los servidores vinculados en bucle invertido están previstos para la realización de pruebas y no se admiten para muchas operaciones, como las transacciones distribuidas.Loopback linked servers are intended for testing and are not supported for many operations, such as distributed transactions.

Crear servidores vinculados (Motor de base de datos de SQL Server)Create Linked Servers (SQL Server Database Engine)

sp_addlinkedserver (Transact-SQL)sp_addlinkedserver (Transact-SQL)

sp_addlinkedsrvlogin (Transact-SQL)sp_addlinkedsrvlogin (Transact-SQL)

sp_dropserver (Transact-SQL)sp_dropserver (Transact-SQL)

sys.servers (Transact-SQL)sys.servers (Transact-SQL)

sp_linkedservers (Transact-SQL)sp_linkedservers (Transact-SQL)