Запрос AD от sql server 2008 Поле описания дает ошибку

Я пытаюсь запросить Active Directory с помощью следующего SQL-запроса, который отлично работает.

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

Когда я добавляю атрибут description, я получаю следующую ошибку:

Msg 7346, уровень 16, состояние 2, строка 6
Не удается получить данные строки от поставщика OLE DB «ADSDSOObject» для связанного сервера «ADSI». Не удалось преобразовать значение данных по причинам, отличным от несоответствия знаков или переполнения.


person Rick    schedule 28.03.2012    source источник


Ответы (2)


Возможности запросов SQL / ADO в Active Directory очень ограничены - я бы по возможности старался избегать их использования.

Причина здесь в том, что атрибут description в Active Directory многозначен - он потенциально может содержать несколько значений (что невозможно в модели реляционной базы данных).

Следовательно, поставщик запросов SQL / ADO не может прочитать какие-либо из этих многозначных атрибутов из LDAP - нет способа, опции или флажка, чтобы включить это - это просто невозможно.

person marc_s    schedule 28.03.2012

У меня такая же проблема с получением поля Description из AD при попытке использовать ADsDSOObject и ADO.

вы должны вставлять значения с помощью оператора типа For Each или Do until ... EOF.

Вот хороший пример

person TheSavo    schedule 29.03.2012