Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2017, 14:32   #1
ViktoriyaB
 
Регистрация: 15.11.2017
Сообщений: 3
По умолчанию Не удается выполнить запрос к АД.

Добрый день! Необходимо выбрать данные из AD. Вроде как задача простая, в инете куча инфы. Но, не удается.
С необходимостью работать с AD столкнулась впервые.

В делфи не выполняется запрос:
qADSelect.SQL.Add('select * from openquery("XXX.AUTO.ACC",''<LDAP://auto.acc/OU=auto,DC=auto,DC=acc>;(&(objectCa tegory=organizationalUnit));objectG UID,distinguishedName;subtree'') ');
qADSelect.Open;
На open выдает ошибку "Произошла одна или несколько ошибок во время работы команды".

Копалась на форумах, нашла рекомендацию создать linked server.
Создала: name XXX.AUTO.ACC, Active Directory Services 2.5, DsDSOObject, EAOrdersLoggingProxy.
В MSSQL Server Manager запрос выполняется, а в Делфи - никак.
В TADOConnection прописано Provider=ADsDSOObject;Encrypt Password=False;Data Source=172.16.xx.xxx;Location=xxx.A UTO.ACC;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648;
IP адрес - ip сервера, к которому прилинковала свой.
Может кто подскажет, что именно я делаю не так?

Последний раз редактировалось ViktoriyaB; 15.11.2017 в 15:22.
ViktoriyaB вне форума Ответить с цитированием
Старый 15.11.2017, 16:04   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Тот запрос через сиквел провайдером MSDASQL
а если запрос примерно такой:
SELECT * FROM 'LDAP://auto.acc'
то и настраивать как провайдер ADSDSOObject
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.11.2017, 12:51   #3
ViktoriyaB
 
Регистрация: 15.11.2017
Сообщений: 3
По умолчанию

Проблема решена прямым подключением к линкованному серверу.

Теперь возникла другая ошибка.
При выполнении кода
DisName := 'LDAP://auto.acc/'+qADSelect.FieldByName('distinguis hedName').AsString;
Comp := GetObject(DisName) as IADsContainer; //получает ссылку на объект
Usr := Comp.Create('user' , 'test1') as IADsUser; //создает объект в данном контейнере
Usr.SetInfo;
на последней строке вылетает ошибка "Указан недопустимый dn-синтаксис". Может кто знает, в чем может быть дело?
ViktoriyaB вне форума Ответить с цитированием
Старый 17.11.2017, 09:16   #4
ViktoriyaB
 
Регистрация: 15.11.2017
Сообщений: 3
По умолчанию

Я победила этого страшного зверя.
Опишу, вдруг кому пригодится.
Данная ошибка означает, что поле LDAPDN (оно же "distinguishedName") не соответствует требуемому синтаксису или содержит значения атрибутов, не соответствующих синтаксису данных типов атрибутов.

Usr := Comp.Create('user' , 'CN='+UAccName)
Обязательно указать CN перед именем пользователя!
ViktoriyaB вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не удается обработать запрос MySQL Luca Brasi PHP 2 03.02.2015 23:57
Не получается выполнить ajax запрос barfly JavaScript, Ajax 5 09.08.2012 06:37
Не удается выполнить команды сопроцессора! VintProg Общие вопросы Delphi 1 21.09.2011 21:38
Не получается выполнить запрос artemavd БД в Delphi 14 06.08.2009 20:44