Запрос LDAP из вопроса SQL Server - PullRequest
3 голосов
/ 06 декабря 2011

У меня возникли проблемы с настройкой оператора SQL для выполнения openquery на LDAP из SQL Server.Я следовал инструкциям, изложенным здесь: Запрос Active Directory из SQL Server 2005 , но у меня возникли некоторые проблемы при объединении последних частей.

Во-первых, я не знал, где находится мой сервер LDAP.Поэтому я сделал nslookup и нашел сервер по умолчанию:

abc.domain.popo.local

Я настроил свой OPENQUERY как

SELECT * FROM OPENQUERY( ADSI, 'SELECT * FROM ''LDAP://DC=abc,DC=domain,DC=popo,DC=local'' WHERE
objectCategory = ''User''')   

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

Произошла ошибка при подготовке запроса «SELECT * FROM» LDAP: // DC = abc, DC = домен, DC = popo, DC = локальный «WHERE objectCategory = 'User'" для выполнения в OLE DBпоставщик "ADSDSOObject" для связанного сервера "ADSI".

В чем здесь проблема?Я неправильно настраиваю DC (потому что я даже не знаю, что означает DC)?Или более вероятно, что у меня просто неправильный сервер для LDAP?

Ответы [ 3 ]

5 голосов
/ 06 декабря 2011

Мне кажется, что вы пытаетесь выполнить запрос к Windows Active Directory (которая функционально выглядит как LDAP). По умолчанию AD не разрешает анонимные запросы - вы должны аутентифицироваться с доверенным именем пользователя и паролем. Кроме того, вам необходимо проверить у своего системного администратора, чтобы убедиться, что у вас есть правильное базовое значение («DC = abc, DC = домен, DC = popo, DC = local»).

1 голос
/ 06 декабря 2011

Убедитесь, что «abc» не является фактическим именем контроллера домена в этом домене; следовательно, в этом случае ваш OPENQUERY должен опустить это и быть:

SELECT * FROM OPENQUERY( ADSI, 'SELECT * FROM ''LDAP://DC=domain,DC=popo,DC=local'' WHERE objectCategory = ''Person'' AND objectClass = ''user''')

1 голос
/ 06 декабря 2011

См. Советы по поиску ADO / SQL Ричарда Мюллера - они помогают? (Сайт Ричарда - настоящая сокровищница ссылок и советов по LDAP и Active Directory - очень рекомендуется!)

Из того, что я видел на этом сайте, вы можете ошибаться objectCategory - попробуйте использовать Person вместо User (который, я считаю, objectClass):

SELECT * FROM OPENQUERY(ADSI, 
            'SELECT * FROM ''LDAP://DC=abc,DC=domain,DC=popo,DC=local'' 
             WHERE objectCategory = ''Person''')   
...