Condividi tramite


Unione di dati eterogenei

Le organizzazioni tipiche archiviano i dati in più database eterogenei. I dati delle risorse umane possono essere archiviati in SQL Server, mentre i dati di gestione degli account vengono archiviati nella directory. Altri dati possono essere archiviati in formati proprietari.

Con, SQL Server 7.0, ADSI e il provider OLE DB, è possibile unire i dati da Active Directory ai dati in SQL Server e creare una visualizzazione dei dati aggiunti.

Per unire i dati di Active Directory con i dati di SQL Server

  1. Eseguire l'Analizzatore delle query SQL (Start | Programmi | Microsoft SQL Server 7.0)

  2. Accedere al computer SQL Server.

  3. Eseguire la riga seguente evidenziandola e premendo CTRL+E:

    EXEC sp_addlinkedserver 'ADSI', 'Active Directory Service Interfaces', 
    'ADSDSOObject', 'adsdatasource'
    GO
    

    In questa riga, gli argomenti per la Stored Procedure di Sistema sp_addlinkedserver sono i seguenti:

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

    È ora possibile usare il server collegato per accedere ad Active Directory da SQL Server.

  4. Il prossimo esempio esegue una query utilizzando l'istruzione OPENQUERY. Questa istruzione ha due argomenti: ADSI, ovvero il nome del server collegato appena 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 utenti.

    Digitare ed eseguire:

    SELECT * FROM OPENQUERY( ADSI, 
        'SELECT name, adsPath 
         FROM 'LDAP://DC=Fabrikam,DC=com' 
         WHERE objectCategory = 'Person' AND objectClass= 'user'')
    

    È anche possibile usare il dialetto LDAP ADSI. Per esempio:

    SELECT * FROM OPENQUERY(ADSI,
        '<LDAP://DC=Fabrikam,DC=COM>;(&(objectCategory=Person)(objectClass=user));name, adspath;subtree')
    

    Nell'esempio precedente la query LDAP ha quattro parti:

    • "<LDAP://DC=Fabrikam,DC=COM>" è il nome distinto del server di directory da cercare.
    • "(&(objectCategory=Person)(objectClass=user))" è il filtro di ricerca LDAP (vedere sintassi del filtro di ricerca).
    • "name, adspath" sono i nomi degli attributi da recuperare (utilizzando il formato del nome visualizzato in LDAP).
    • "sottoalbero" indica l'ambito della ricerca.

Creazione ed esecuzione di una vista