Obtener acceso a datos externos

Para obtener acceso a datos de un origen de datos OLE DB, debe proporcionar la siguiente información a SQL Server:

  • Nombre del proveedor OLE DB que expone el origen de datos.

  • Cualquier información que necesite el proveedor OLE DB para buscar el origen de los datos.

  • Nombre de un objeto que el origen de datos OLE DB pueda exponer como conjunto de filas o una consulta que se pueda enviar al proveedor OLE DB que dará lugar a que el origen de datos exponga un conjunto de filas. Los objetos que se pueden exponer como conjuntos de filas se conocen como tablas remotas. Las consultas que generan conjuntos de filas se conocen como consultas de paso a través.

  • Opcionalmente, puede proporcionar a SQL Server Id. de inicio de sesión válidos para el origen de datos OLE DB.

SQL Server admite referencias a orígenes de datos OLE DB heterogéneos en instrucciones Transact-SQL utilizando el nombre del servidor vinculado o el nombre del equipo ad hoc.

Nombres de servidores vinculados

Un servidor vinculado es un servidor virtual que se ha definido en SQL Server con toda la información necesaria para obtener acceso a un origen de datos OLE DB. El nombre de un servidor vinculado se define utilizando el procedimiento almacenado del sistema sp_addlinkedserver. La definición del servidor vinculado contiene toda la información necesaria para buscar el origen de datos OLE DB. Los inicios de sesión locales de SQL Server se asignan a inicios de sesión del servidor vinculado utilizando sp_addlinkedsrvlogin.

Se puede hacer referencia a las tablas remotas utilizando el nombre de servidor vinculado de alguna de estas formas:

  • El nombre de servidor en una referencia de tabla o vista con nombre de cuatro partes en una instrucción Transact-SQL. Las otras tres partes del nombre hacen referencia a un objeto del servidor vinculado que se expone como un conjunto de filas.

  • Un parámetro de entrada para una función OPENQUERY. OPENQUERY envía al proveedor OLE DB un comando para que lo ejecute. A continuación, se puede utilizar el conjunto de filas devuelto como referencia de tabla o vista en una instrucción Transact-SQL.

Para obtener más información, vea Identificar un origen de datos con un nombre de servidor vinculado.

Nombres "ad hoc"

Los nombres ad hoc se utilizan para consultas poco frecuentes de orígenes de datos OLE DB que no están definidos como servidores vinculados. En SQL Server, las funciones OPENROWSET y OPENDATASOURCE proporcionan información de conexión para obtener acceso a datos de orígenes de datos OLE DB.

De manera predeterminada, no se admiten nombres ad hoc. La opción de proveedor DisallowAdhocAccess debe estar establecida en 0 y debe estar habilitada la opción de configuración avanzada Ad Hoc Distributed Queries.

Nota de seguridadNota de seguridad

La habilitación de nombres ad hoc se traduce en que cualquier inicio de sesión autenticado en SQL Server puede obtener acceso al proveedor. Los administradores de SQL Server sólo deben habilitar esta característica para proveedores de mucha confianza que sean seguros para que cualquier inicio de sesión local tenga acceso a ellos.

Las funciones OPENROWSET y OPENDATASOURCE sólo se deben utilizar para hacer referencia a orígenes de datos OLE DB a los que rara vez se obtiene acceso. Para los orígenes de datos cuyo acceso es más frecuente, defina un servidor vinculado. Ni OPENDATASOURCE ni OPENROWSET proporcionan toda la funcionalidad de definiciones de servidor vinculado. Esto incluye administración de seguridad y la capacidad de consultar información del catálogo. Cada vez que se llaman a estas funciones, es necesario especificar toda la información de la conexión, incluidas las contraseñas.

OPENROWSET y OPENDATASOURCE parecen ser funciones y, por comodidad, se hace referencia a ellas como funciones; sin embargo, OPENROWSET y OPENDATASOURCE son macros y no admiten variables Transact-SQL como argumentos.

OPENROWSET se puede utilizar con cualquier proveedor OLE DB que devuelva un conjunto de filas, y se puede utilizar en cualquier lugar donde se utilice una referencia de tabla o vista en una instrucción Transact-SQL. OPENROWSET se especifica con lo siguiente:

  • Toda la información necesaria para conectarse al origen de datos OLE DB.

  • El nombre de un objeto o una consulta que generarán un conjunto de filas.

OPENDATASOURCE proporciona información de conexión como parte de un nombre de objeto de cuatro partes. Esta función admite sólo proveedores OLE DB que exponen varios conjuntos de filas utilizando la notación catálogo**.esquema.**objeto. OPENDATASOURCE se puede utilizar en las mismas ubicaciones de la sintaxis Transact-SQL que un nombre de servidor vinculado. OPENDATASOURCE se especifica con lo siguiente:

  • El nombre registrado como PROGID del proveedor OLE DB que se utiliza para obtener acceso al origen de datos.

  • Una cadena de conexión que especifica las distintas propiedades de conexión que se deben pasar al proveedor OLE DB. La sintaxis de la cadena de conexión es una secuencia de pares palabra clave-valor. La sintaxis básica se define en el kit de desarrollo de software de Microsoft Data Access y cada proveedor documenta los pares palabra clave-valor específicos que admite. Para obtener más información sobre las cadenas de conexión, vea OPENDATASOURCE (Transact-SQL).

Para obtener más información, vea Identificar un origen de datos con un nombre ad hoc.

Obtener acceso a servidores vinculados

Tras crear un servidor vinculado utilizando sp_addlinkedserver, se puede obtener acceso al servidor utilizando lo siguiente:

  • Consultas distribuidas que obtienen acceso a tablas del servidor vinculado a través de instrucciones SELECT, INSERT, UPDATE y DELETE utilizando un nombre basado en un servidor vinculado.

  • Procedimientos almacenados remotos ejecutados en el servidor vinculado utilizando un nombre de cuatro partes.

  • Una instrucción EXECUTE que toma un comando de paso a través con parámetros arbitrario utilizando la extensión AT linked_server_name. Este comando incluye instrucciones DDL (Lenguaje de definición de datos) y DML ( Lenguaje de manipulación de datos) o comandos que devuelven más de un resultado. Para obtener más información, vea Usar consultas de paso a través como tablas.

sp_addserver se mantiene como característica de compatibilidad para aplicaciones existentes, pero este procedimiento almacenado no se admitirá en próximas versiones. Cuando las aplicaciones se transfieren a SQL Server 2008, es posible que se deban ejecutar durante un tiempo con determinado código nuevo que utilice consultas distribuidas en una definición de servidor vinculado y determinado código heredado que utilice una definición de servidor remoto. Ambos servidores vinculados y remotos utilizan el mismo espacio de nombres. Por tanto, la definición de servidor vinculado o servidor remoto debe utilizar un nombre que difiera del nombre de red del servidor al que se obtiene acceso en modo remoto. Defina una de las entradas con un nombre de servidor diferente y utilice sp_setnetname para asociar esa definición con el nombre de red del servidor remoto.