Compartir a través de


Consulta distribuida

Dado que ADSI es un proveedor OLE DB, puede participar en la consulta distribuida introducida en Microsoft SQL Server 7.0. A continuación se muestran posibles escenarios:

  • Unión de objetos de Active Directory con SQL Server datos.
  • Actualización de datos SQL desde objetos de Active Directory.
  • Crear combinaciones triples o bidireccionales con otros proveedores OLE DB. Por ejemplo, Index Server, SQL Server y Active Directory.

El proveedor OLE DB admite dos dialectos de comandos, LDAP y SQL, para acceder al servicio de directorio y devolver resultados en un formulario tabular que se puede consultar con SQL Server consultas distribuidas.

Para iniciar el Analizador de consultas SQL

  1. En primer lugar, abra el Analizador de consultas SQL en el SQL Server que esté vinculado al servicio de directorio (consulte Creación de un servidor vinculado).
  2. Ejecución del Analizador de consultas SQL (Inicio | Programas | Microsoft SQL Server 7.0)
  3. Inicie sesión en el equipo SQL Server.
  4. Escriba la consulta SQL en el panel Editor de la ventana de consulta.
  5. Ejecute la consulta presionando F5.

En las secciones siguientes se proporcionan más detalles:

Creación de un servidor vinculado

Para configurar una combinación distribuida en un servicio de directorio de Windows 2000 Server, cree un servidor vinculado. Para ello, configure la asignación adsi mediante el procedimiento almacenado del sistema sp_addlinkedserver . Este procedimiento vincula un nombre a un nombre del proveedor OLE DB.

En el ejemplo siguiente, tenga en cuenta que hay varios argumentos usados con el procedimiento almacenado del sistema sp_addlinkedserver :

  • "ADSI" es el argumento del servidor y será el nombre de este servidor vinculado.
  • "Active Directory Services 2.5" es el argumento srvproduct , que es el nombre del origen de datos OLE DB que va a agregar como servidor vinculado.
  • "ADSDSOObject" es el argumento provider_name .
  • "adsdatasource" es el argumento data_source , que es el nombre del origen de datos tal y como interpreta el proveedor OLE DB.

El comando EXEC se usa para ejecutar procedimientos almacenados del sistema.

EXEC sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5', 
'ADSDSOObject', 'adsdatasource'
GO

En el caso de los inicios de sesión autenticados en Windows, la asignación automática es suficiente para acceder al directorio con SQL Server delegación de seguridad. Dado que la asignación automática se crea de forma predeterminada para los servidores vinculados creados a través de sp_addlinkedserver, no se necesita ninguna otra asignación de inicio de sesión.

Para los inicios de sesión autenticados SQL Server, puede configurar inicios de sesión y contraseñas adecuados para conectarse al servicio de directorio mediante el procedimiento almacenado del sistema de sp_addlinkedsrvlogin.

Nota

Siempre que sea posible, utilice la autenticación de Windows.

 

Creación de un inicio de sesión autenticado de SQL Server

Si prefiere usar un inicio de sesión autenticado SQL Server en lugar de autenticación de Windows, agregue un inicio de sesión al servidor vinculado (consulte la sección anterior). Para ello, use el procedimiento almacenado del sistema sp_addlinkedsrvlogin .

En el ejemplo siguiente, hay varios argumentos que se usan con el procedimiento almacenado del sistema sp_addlinkedsrvlogin :

  • "ADSI" es el argumento rmtsvrname , que es el nombre del servidor vinculado creado en el ejemplo anterior.
  • "Fabrikam\Administrator" es el argumento locallogin, que es el inicio de sesión en el servidor local y puede ser el inicio de sesión de SQL Server o un usuario de Windows NT.
  • "CN=Administrator,OU=Sales,DC=activeds,DC=Fabrikam,DC=com" es el argumento rmtuser , que es el nombre de usuario que se usa para conectarse porque el uso esfalse.
  • "secret**2000" es rmtpassword, que es la contraseña asociada a rmtuser.

El comando EXEC se usa para ejecutar procedimientos almacenados del sistema.

EXEC sp_addlinkedsrvlogin 'ADSI', false, 'Fabrikam\Administrator', 
'CN=Administrator,OU=Sales,DC=activeds,DC=Fabrikam,DC=com', 'secret**2000'

Consultar el servicio de directorio

Después de crear un servidor vinculado, use una instrucción OPENQUERY para enviar una consulta al servicio de directorio. La siguiente consulta SQL crea una tabla virtual para contener los resultados de la consulta mediante la instrucción CREATE VIEW . La vista que se crea se denomina "viewADContacts".

La primera instrucción SELECT define la información que se consulta desde el servicio de directorio y la asigna a una columna de la tabla. La información rodeada de corchetes indica los datos que se colocan en la tabla virtual. La información que no está entre corchetes indica los datos que se recuperan del servicio de directorio. Tenga en cuenta que su nombre para mostrar LDAP debe hacer referencia a la información que se está recuperando del servicio de directorio.

La siguiente instrucción es la instrucción OPENQUERY . Esta instrucción tiene dos argumentos: ADSI, que es el nombre del servidor vinculado que creó y una instrucción de consulta. La instrucción query contiene los siguientes elementos:

  • La instrucción SELECT contiene la lista de datos que se obtendrán del servicio de directorio. Tendrá que usar el nombre para mostrar ldap para indicar qué datos está buscando.
  • La instrucción FROM contiene el nombre del servidor de directorio vinculado del que se obtendrá esta información.
  • La instrucción WHERE proporciona las condiciones de búsqueda. En este ejemplo, busca contactos.

La instrucción SELECT final se usa para recoger los resultados de la vista que se va a mostrar.

CREATE VIEW viewADContacts
AS
SELECT  [Name], sn [Last Name], street [Street], l [City], st [State]
FROM OPENQUERY( ADSI, 
     'SELECT name, sn, street, l, st
      FROM 'LDAP:// OU=Sales,DC=activeds,DC=Fabrikam,DC=Com'
      WHERE objectCategory='Person' AND 
      objectClass = 'contact'')
GO
SELECT * FROM viewADContacts