Как вы преодолеваете ограничения для запросов LDAP SQL? - PullRequest
0 голосов
/ 23 марта 2020

У меня есть следующий запрос LDAP, который генерирует ошибку:

Msg 7330, уровень 16, состояние 2, строка 10 Не удается получить строку из поставщика OLE DB "ADSDSOObject" для связанного сервера "( null) ".

Запрос LDAP:

SELECT *
FROM Openrowset ('ADSDSOObject', 'adsdatasource',
'SELECT *
FROM ''LDAP://DC=my,DC=domain,DC=name>;
(&(objectCategory=person)(objectClass=user)(co=United Kingdom));
sAMAccountName,displayName,givenName,sn,physicalDeliveryOfficeName,title,isDeleted,department,userAccountControl,lastLogonTimeStamp,TelephoneNumber,Mail,distinguishedname,CN;''
') 
ORDER BY sAMAccountName
OFFSET 3000 ROWS 
FETCH NEXT 3000 ROWS ONLY OPTION (RECOMPILE);

Запрос выполняется на SQL Сервере, на котором я удаленно использую учетную запись службы.

Я прочитал несколько статей и изменил этот запрос, чтобы соответствовать синтаксису, который облегчает их проблемы, но не работает для меня, и я в растерянности. Я знаю, что могу использовать OpenQuery и создал связанный сервер, но меня встречает похожая кирпичная стена.

Я попытался разбить на страницы и разбил запрос на куски, используя row_number(). Я также попытался увеличить размер страницы на сервере AD и обернуть его в CTE. Я попытался выбрать первые 3000 - количество записей, которое я могу получить до появления ошибки - записать эти записи в другую таблицу и получить еще 3000, исключая те, которые уже есть в таблице, но возвращается та же ошибка. В этом сценарии я могу перейти в топ-100 и получить еще 400 записей до того, как ошибка вернется. Кажется, лимит равен 3401. Пример кода учитывает, что я уже взял верхнюю 3000.

Любая помощь или совет будут высоко оценены.

...