Realizar un SQL consultas distribuidas mediante ADSI

Resumen

Este artículo proporciona información acerca de cómo utilizar el proveedor OLEDB de Active Directory Services Interfaces (ADSI) de SQL Server para realizar una consulta distribuida.

Más información

Requisitos e información General

Una consulta distribuida permite al desarrollador llenar una tabla de SQL Server o una vista con los datos de Active Directory u otro servidor de protocolo ligero de acceso a directorios (LDAP). Para realizar una consulta distribuida mediante ADSI, el servidor debe ejecutar SQL Server 7.0 o posterior. ADSI es un componente del sistema de Windows 2000, por lo que ninguna instalación adicional en necesarios en dicho sistema operativo. Si el sistema operativo es Windows NT 4.0, debe instalar Active Directory Client Extension (DSClient) para Windows NT 4.0. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

288358 cómo instalar Active Directory Client Extension

Un procedimiento paso a paso para realizar una consulta distribuida con ADSI puede encontrarse en "Unir datos heterogéneos" en el siguiente artículo de MSDN Library:

Cuando se emite el comando OPENQUERY, SQL Server invocará el proveedor OLEDB de ADSI, ADsDSOObject, que se ha configurado en la función de sp_addlinkedserver . El proveedor pasará la consulta a funciones de la interfaz de lDirectorySearch ADSI subyacentes. Estas funciones ADSI hará que las llamadas necesarias de LDAP en el servidor deseado. Las respuestas del servidor se pasará las mismas capas de copia de seguridad para SQL Server.

Puede utilizarse una consulta en el LDAP o SQL dialectos. Obtener información adicional acerca de cómo buscar con el proveedor de OLE DB de ADSI puede encontrarse en el artículo de MSDN siguiente:Una explicación de los dos dialectos se encuentra en el tema siguiente en MSDN:Si se especifica un asterisco (*) para la lista de atributos, el proveedor OLEDB de ADSI devuelve un objeto recordset que contiene sólo el ADsPath de cada entrada. ADsPath es un cliente genera el atributo y se garantiza que se devuelve como un atributo de valores destacó.


Una cadena de enlace sin servidor es uno que no contenga el nombre o la dirección IP del servidor de destino. Enlaces sin servidor se utilizan para buscar el mejor controlador de dominio de Windows 2000 para controlar la solicitud. No se puede utilizar enlaces sin servidor cuando el servidor de destino no es un controlador de dominio de Windows 2000 para el dominio predeterminado. Para obtener información adicional sobre enlaces sin servidor, consulte

En el ejemplo en el documento, el servidor LDAP se contactarán con las credenciales en las que se realizó la llamada OPENQUERY . Dependiendo de cómo está diseñada la aplicación, esto puede o no puede ser deseable. Si utiliza la autenticación de SQL Server en lugar de la autenticación de Windows, las credenciales SQL se llevarán a cabo en el directorio. Problemas de autenticación también se producen si el servicio de directorio de destino no admite la autenticación de Windows.
Para obtener más información acerca de cómo utilizar ADSI para consultar estos servidores LDAP, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

251195 cómo utilizar ADSI para consultar un servidor LDAP de terceros

Si no se desea ponerse en contacto con el directorio utilizando las mismas credenciales como la llamada OPENQUERY , un sp_addlinksrvlogin puede utilizarse para modificar la identidad bajo la que se contacta con un servidor remoto. Cuando se implementa la sp_addlinksrvlogin de ADSI invocará un enlace simple con el servicio de directorio de destino con la información especificada en los parámetros rmtuser y rmtpassword . Es importante destacar que un enlace simple transmitan las credenciales al servidor de directorio en texto sin cifrar. Esto tiene la ventaja de que se entenderá por muchos servidores de directorio, pero una desventaja es que el nombre de usuario y la contraseña será visibles en un monitor de red. Para obtener más información sobre los enlaces simples, consulte:



Una vez añadido, el sp_addlinksrvlogin puede quitarse llamando sp_droplinkedsrvlogin.

Limitaciones

El proceso de utilizar la instrucción OPENQUERY para extraer información de un servidor LDAP sufrir algunas limitaciones. Las limitaciones que pueden evitarse en algunos casos, pero en otros casos debe modificarse el diseño de la aplicación. Una aplicación externa o un objeto COM que utiliza ADSI para recuperar la información del servidor LDAP y, a continuación, crear una tabla de SQL mediante ADO u otros métodos de acceso a datos es otro método viable.

La primera limitación es que no se puede devolver propiedades multivalores en el conjunto de resultados en SQL Server. ADSI lee la información de esquema del servidor LDAP que define la estructura y la sintaxis de las clases y los atributos utilizados por el servidor. Si el atributo que se solicita desde el servidor LDAP está definido en el esquema como multivalor no se puede devolver en una instrucción OPENQUERY.

Es típico para un servidor de directorio exigir una limitación del servidor en el número de objetos que se devuelven de una consulta determinada. Esto es para evitar ataques de denegación de servicio y la sobrecarga de la red. Para consultar correctamente el servidor de directorio, las consultas grandes deben dividirse en muchas partes más pequeñas. Una forma de hacerlo es mediante un proceso denominado paginación. Aunque la paginación está disponible a través del proveedor de OLE DB de ADSI, actualmente no hay ninguna forma de realizar una consulta distribuida de SQL. Esto significa que el número total de objetos que pueden devolverse en una consulta es el límite del servidor. En el Active Directory de Windows 2000, el límite del servidor predeterminado es 1.000 objetos. Para obtener más información acerca de la paginación se puede encontrar en el siguiente tema de MSDN Library:

Para obtener más información acerca de cómo modificar el límite del servidor de maxPageSize mediante NTDSUtil, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

315071 cómo ver y configurar una directiva LDAP en Active Directory mediante Ntdsutil.exe

Referencias

Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:

187529 cómo utilizar ADO para tener acceso a objetos a través de un proveedor LDAP de ADSI

Para obtener más información, incluido un ejemplo, se puede encontrar en la sección ADSI SDK de la plataforma, para obtener más información acerca de qué puede encontrarse en el siguiente sitio Web de Microsoft:
El vínculo anterior también contiene información acerca de dónde obtener la descarga de varios SDK de Windows en la parte inferior de la página bajo la sectiont titulada: "Lo que se descargan otros".
Propiedades

Id. de artículo: 299410 - Última revisión: 9 ene. 2017 - Revisión: 1

Comentarios