У меня есть следующий запрос 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.
Любая помощь или совет будут высоко оценены.