Discussione:
Query nelle Active directory
(troppo vecchio per rispondere)
the_poet
2005-05-10 08:39:30 UTC
Permalink
Salve ragazzi,
ho letto che è possibile effettuare query nel database delle active
directory da SQL server.

Il domain controller del dominio nel quale lavoro si chiama ADSERVER, lo ho
aggiunto ai linked server del mio PC (sul quale è installato SQL Server 2000
Developer Edition SP3) con il seguente comando:

EXEC sp_addlinkedserver 'ADSEREVER', 'Active Directory Services 2.5',
'ADSDSOObject', 'adsdatasource'
GOEseguendo una query qualsiasi (questa è presa dal BOL), ad esempio:CREATE
VIEW viewADContacts
AS
SELECT [Name], SN [Last Name], ST State
FROM OPENQUERY(ADSERVER,
'SELECT Name, SN, ST
FROM ''LDAP://10.0.0.254/ OU=Sales,DC=sales,DC=northwind,DC=com''
WHERE objectCategory = ''Person'' AND
objectClass = ''contact''')
GO
SELECT * FROM viewADContacts10.0.0.254 è l'indirizzo IP del serverOttengo il
seguente errore:Server: messaggio 7321, livello 16, stato 2, procedura
viewADContacts, riga 5Si è verificato un errore durante la preparazione di
una query per l'esecuzione nel provider OLE DB 'ADSDSOObject'. Traccia di
errore OLE DB [OLE/DB Provider 'ADSDSOObject' ICommandPrepare::Prepare
returned 0x80040e14].N.B.1) Sul mio PC il servizio MSSQLSERVER viene
eseguito da un account di dominio facente parte del gruppo Administrators
del dominio stesso2) i parametri della query che cosa sono (intendo
OU=Sales,DC=sales,DC=northwind,DC=com'') ? Dove trovo documentazione?
Luca Bianchi
2005-05-10 09:06:00 UTC
Permalink
Sul mio PC il servizio MSSQLSERVER viene eseguito da un account di
dominio facente parte del gruppo Administrators del dominio stesso2)
...e questo è male...
OU=Sales,DC=sales,DC=northwind,DC=com'') ?
...stai facendo una ricerca nell'unità organizzativa (Organizational Unit)
chiamata Sales nel dominio sales.northwind.com (che sicuramente non è il tuo
dominio). Se fai una ricerca tra i post di questo ng trovi degli esempi
(funzionanti) di query su AD...
Dove trovo documentazione?
http://www.windowsitpro.com/SQLServer/Article/ArticleID/14225/14225.html
http://www.windowsitpro.com/SQLServer/Article/ArticleID/15662/15662.html
http://support.microsoft.com/default.aspx?scid=299410
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/ldap_dialect.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/searching_with_activex_data_objects_ado.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/searching_for_objects.asp

Bye
--
Luca Bianchi
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
the_poet
2005-05-10 09:45:04 UTC
Permalink
Post by Luca Bianchi
Sul mio PC il servizio MSSQLSERVER viene eseguito da un account di
dominio facente parte del gruppo Administrators del dominio stesso2)
...e questo è male...
Beh, lo so che è male, avevo fatto momentaneamente questo login per
escludere problemi di permessi nella lettura dei dati, visto che il
messaggio di errore è piuttosto criptico...
Post by Luca Bianchi
OU=Sales,DC=sales,DC=northwind,DC=com'') ?
...stai facendo una ricerca nell'unità organizzativa (Organizational Unit)
chiamata Sales nel dominio sales.northwind.com (che sicuramente non è il tuo
dominio). Se fai una ricerca tra i post di questo ng trovi degli esempi
(funzionanti) di query su AD...
Dove trovo documentazione?
http://www.windowsitpro.com/SQLServer/Article/ArticleID/14225/14225.html
http://www.windowsitpro.com/SQLServer/Article/ArticleID/15662/15662.html
http://support.microsoft.com/default.aspx?scid=299410
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/l
dap_dialect.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/s
earching_with_activex_data_objects_ado.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/s
earching_for_objects.asp
Post by Luca Bianchi
Bye
--
Luca Bianchi
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
Grazie per i link
the_poet
2005-05-10 09:06:00 UTC
Permalink
Allora, aggiornamento, sono riuscito ad eseguire una generica query con la
seguente sintassi:

SELECT [Name], SN [Last Name], ST State
FROM OPENQUERY([ADSERVER],
'SELECT Name, SN, ST
FROM ''LDAP://ADSISrv/ DC=nome-del-domino-della-mia-azienda,DC=local''
WHERE objectClass = ''user''')

quindi siamo partiti.
Ma dove la trovo la documentazione sulla struttura del database AD? In EM
non riesco a sfogliare le tabelle del server...
Post by the_poet
Salve ragazzi,
ho letto che è possibile effettuare query nel database delle active
directory da SQL server.
Il domain controller del dominio nel quale lavoro si chiama ADSERVER, lo ho
aggiunto ai linked server del mio PC (sul quale è installato SQL Server 2000
EXEC sp_addlinkedserver 'ADSEREVER', 'Active Directory Services 2.5',
'ADSDSOObject', 'adsdatasource'
GOEseguendo una query qualsiasi (questa è presa dal BOL), ad
esempio:CREATE
Post by the_poet
VIEW viewADContacts
AS
SELECT [Name], SN [Last Name], ST State
FROM OPENQUERY(ADSERVER,
'SELECT Name, SN, ST
FROM ''LDAP://10.0.0.254/ OU=Sales,DC=sales,DC=northwind,DC=com''
WHERE objectCategory = ''Person'' AND
objectClass = ''contact''')
GO
SELECT * FROM viewADContacts10.0.0.254 è l'indirizzo IP del serverOttengo il
seguente errore:Server: messaggio 7321, livello 16, stato 2, procedura
viewADContacts, riga 5Si è verificato un errore durante la preparazione di
una query per l'esecuzione nel provider OLE DB 'ADSDSOObject'. Traccia di
errore OLE DB [OLE/DB Provider 'ADSDSOObject' ICommandPrepare::Prepare
returned 0x80040e14].N.B.1) Sul mio PC il servizio MSSQLSERVER viene
eseguito da un account di dominio facente parte del gruppo Administrators
del dominio stesso2) i parametri della query che cosa sono (intendo
OU=Sales,DC=sales,DC=northwind,DC=com'') ? Dove trovo documentazione?
Luca Bianchi
2005-05-10 09:20:12 UTC
Permalink
Post by the_poet
Ma dove la trovo la documentazione sulla struttura del database AD?
In EM non riesco a sfogliare le tabelle del server...
...e non le sfoglierai mai... :-)
AD non è un database relazionale, quindi il concetto di tabella non
esiste...
--
Luca Bianchi
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
Luca Bianchi
2005-05-10 11:09:50 UTC
Permalink
Sai se è possibile "scrivere" in AD usando SQL server (per esempio
creare un utente?)
Il fatto di poter aggiornare degli attributi dipende dal provider che
utilizzi (diciamo quindi di si). Quanto ad inserire un nuovo utente non sono
in grado di escluderti la fattibilità, ma lavorandoci su per qualche mese
probabilmente riuscirai a creare un utente. Come ti dicevo, AD non è un
database riconducibile ad un insieme di tabelle composte da un numero
variabile di record come probabilmente lo immagini e quindi SQL Server (in
quanto database relazionale) è lo strumento meno adatto per manipolarne le
informazioni. Esistono già degli strumenti per manipolare AD (basati su
ADSI - Active Directory Services Interface) per cui nessuno ha mai speso (e
mai spenderà) tempo e risorse per metter su uno script in T-SQL per fare
(male) ciò che altri già fanno (bene). Lo vedo un po come creare delle
pagine asp concatenando delle stringhe utilizzando i comandi T-SQL,
esportarle utilizzando bcp (per creare i file fisici) ed infine configurare
IIS utilizzando xp_cmdshell che richiama una serie di utility a riga di
comando...

Bye
--
Luca Bianchi
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
the_poet
2005-05-10 10:52:00 UTC
Permalink
Sai se è possibile "scrivere" in AD usando SQL server (per esempio creare un
utente?)
Post by Luca Bianchi
Post by the_poet
Ma dove la trovo la documentazione sulla struttura del database AD?
In EM non riesco a sfogliare le tabelle del server...
...e non le sfoglierai mai... :-)
AD non è un database relazionale, quindi il concetto di tabella non
esiste...
--
Luca Bianchi
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
Loading...