2012-03-28 9 views
3

Ich versuche, das Active Directory mit der folgenden SQL-Abfrage abzufragen, die perfekt funktioniert.Anfrage AD von SQL Server 2008 Beschreibung Feld gibt Fehler

SELECT * FROM OpenQuery(ADSI, 
         'SELECT title, displayName, sAMAccountName, givenName, 
           telephoneNumber, facsimileTelephoneNumber, sn, 
           mail, physicalDeliveryOfficeName 
          FROM ''LDAP://DC=mydomain,DC=org'' 
          WHERE sAMAccountName = ''myUser''') 

Wenn ich hinzufügen, das description Attribut ich die folgende Fehlermeldung erhalten:

Msg 7346, Level 16, State 2, Line 6
Cannot get the data of the row from the OLE DB provider "ADSDSOObject" for linked server "ADSI". Could not convert the data value due to reasons other than sign mismatch or overflow.

Antwort

4

Die SQL/ADO Abfragefunktionen in Active Directory sind sehr begrenzt - ich würde versuchen, sie immer dann möglich, wenn mit zu vermeiden.

Der Grund hier ist, dass das Attribut description in Active Directory mehrwertig ist - es könnte möglicherweise mehrere Werte enthalten (etwas, das in einem relationalen Datenbankmodell unmöglich ist).

Daher kann der SQL/ADO-Abfrageanbieter keine dieser mehrwertigen Attribute aus LDAP lesen - es gibt keine Möglichkeit oder Option oder Kontrollkästchen, um das zu aktivieren - es ist einfach nicht möglich.

0

Ich habe das gleiche Problem, das Description Feld von AD zu bekommen, beim Versuch, ADsDSOObject und ADO zu verwenden.

müssen Sie durch die Werte mit einer For Each oder Do until ... EOF Art der Aussage zu interattieren.

Here is a good example