Condividi tramite


Query distribuita

Poiché ADSI è un provider OLE DB, può partecipare a Distributed Query introdotta in Microsoft SQL Server 7.0. Di seguito sono riportati i possibili scenari:

  • Unione di oggetti Active Directory con dati di SQL Server.
  • Aggiornamento dei dati SQL da oggetti Active Directory.
  • Creazione di join bidirezionali o a quattro vie con altri provider OLE DB. Ad esempio, Index Server, SQL Server e Active Directory.

Il provider OLE DB supporta due dialetti di comando, LDAP e SQL, per accedere al servizio directory e restituire risultati in un formato tabulare su cui è possibile eseguire query con query distribuite di SQL Server.

Per avviare l'analizzatore query SQL

  1. Aprire prima di tutto il SQL Query Analyzer in SQL Server collegato al servizio directory . Vedere Creazione di un server collegato.
  2. Eseguire il dell'analizzatore query SQL di (Start | Programmi | Microsoft SQL Server 7.0)
  3. Accedere al computer SQL Server.
  4. Immettere la query SQL nel riquadro Editor della finestra di query.
  5. Eseguire la query premendo F5.

Le sezioni seguenti forniscono altri dettagli:

Creazione di un server collegato

Per configurare un join distribuito in un servizio directory di Windows 2000 Server, creare un server collegato. A tale scopo, configurare il mapping ADSI usando la stored procedure di sistema sp_addlinkedserver. Questa procedura collega un nome a un nome di provider OLE DB.

Nell'esempio seguente si noti che esistono diversi argomenti usati con la stored procedure di sistema sp_addlinkedserver:

  • "ADSI" è l'argomento server e sarà il nome del server collegato.
  • "Active Directory Services 2.5" è l'argomento srvproduct, ovvero il nome dell'origine dati OLE DB che si sta aggiungendo come server collegato.
  • "ADSDSOObject" è l'argomento provider_name.
  • "adsdatasource" è l'argomento data_source, ovvero il nome dell'origine dati come interpretato dal provider OLE DB.

Il comando EXEC viene usato per eseguire stored procedure di sistema.

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

Per gli account di accesso autenticati di Windows, il mapping automatico è sufficiente per accedere alla directory con la delega di sicurezza di SQL Server. Poiché il mapping automatico viene creato per impostazione predefinita per i server collegati creati tramite sp_addlinkedserver, non è necessario alcun altro mapping di accesso.

Per gli account di accesso autenticati di SQL Server, è possibile configurare account di accesso e password appropriati per la connessione al servizio directory usando la stored procedure di sistema sp_addlinkedsrvlogin.

Nota

Quando possibile, usare l'autenticazione di Windows.

 

Creazione di un account di accesso autenticato di SQL Server

Se si preferisce usare un account di accesso autenticato di SQL Server anziché l'autenticazione di Windows, aggiungere un account di accesso al server collegato (vedere la sezione precedente). A tale scopo, utilizzare la stored procedure di sistema sp_addlinkedsrvlogin.

Nell'esempio seguente sono disponibili diversi argomenti usati con la stored procedure di sistema sp_addlinkedsrvlogin:

  • "ADSI" è l'argomento rmtsvrname, ovvero il nome del server collegato creato nell'esempio precedente.
  • "Fabrikam\Administrator" è l'argomento locallogin, ovvero l'account di accesso nel server locale e può essere l'account di accesso di SQL Server o un utente di Windows NT.
  • "CN=Administrator,OU=Sales,DC=activeds,DC=Fabrikam,DC=com" è l'argomento rmtuser, ovvero il nome utente usato per la connessione perché usare se stessa è false.
  • "secret**2000" è il rmtpassword, ovvero la password associata a rmtuser

Il comando EXEC viene usato per eseguire stored procedure di sistema.

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

Esecuzione di query sul servizio directory

Dopo aver creato un server collegato, usare un'istruzione OPENQUERY per inviare una query al servizio directory. La query SQL seguente crea una tabella virtuale per contenere i risultati della query usando l'istruzione CREATE VIEW. La vista creata è denominata "viewADContacts".

La prima istruzione SELECT definisce le informazioni sottoposte a query dal servizio directory e ne esegue il mapping a una colonna nella tabella. Le informazioni racchiuse tra parentesi quadre indicano i dati inseriti nella tabella virtuale. Le informazioni non racchiuse tra parentesi quadre indicano i dati recuperati dal servizio directory. Si noti che le informazioni recuperate dal servizio directory devono fare riferimento al relativo nome visualizzato LDAP.

L'istruzione successiva è l'istruzione OPENQUERY. Questa istruzione ha due argomenti: ADSI, ovvero il nome del server collegato creato e un'istruzione di query. L'istruzione query contiene gli elementi seguenti:

  • L'istruzione SELECT contiene l'elenco di dati che verranno ottenuti dal servizio directory. È necessario usare il nome visualizzato LDAP per indicare i dati cercati.
  • L'istruzione FROM contiene il nome del server di directory collegato da cui verranno ottenute queste informazioni.
  • L'istruzione WHERE fornisce le condizioni di ricerca. In questo esempio viene eseguita la ricerca di contatti.

L'istruzione SELECT finale viene usata per raccogliere i risultati dalla visualizzazione da visualizzare.

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