ADSI Query в SQL Dialect: правильное упорядочение GUID - PullRequest
0 голосов
/ 04 ноября 2019

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

Моя стратегия заключается в использовании запроса ADSI в SQL Dialect с чем-то вроде этого. Ниже приведен псевдокод:

iteration #1

    select top COUNT_RECORDS_IN_PAGE from
    (
        select columns
        from 'ADsPath'
        order by unique-column
    )

iteration #2

    select top COUNT_RECORDS_IN_PAGE from
    (
        select columns
        from 'ADsPath'
        where unique-column > (max unique-column from iteration #1)
        order by unique-column
    )

etc.

Для этого требуется уникальный столбец для разделения результатов. В предыдущих запросах я успешно использовал sAMAccountName. Но мой новый запрос ADSI возвращает Active Directory Контейнеры и Организационные единицы , объекты, которые не имеют значения sAMAccountName.

Я пытался использовать distinguishedName в качестве уникального столбца, но, по-видимому, возникают проблемы с сортировочным столбцом, зависящим от функционального уровня домена. (Ссылка: статья Microsoft )

Я сейчас пытаюсь заставить objectGUID работать как столбец разделения. Но у меня проблемы с порядком значений GUID. Предложение order by сортирует GUID по их шестнадцатеричным значениям. Например:

0x007A6F38405C6F40AADF38EAEBCE9E1D
0x02CC1023EBF40B4C84DFAC3B0F270014
0x0327CBA556ECA640861F56030D79EFEB
0x0345F98337FD2242964E5A62145FF751

Но предложение where objectGUID > '0x0345F98337FD2242964E5A62145FF751' не дает ожидаемых результатов. Меня беспокоит, что оператор сравнения > может не использовать тот же порядок, что и предложение order by. Возможно, он использует какой-то другой порядок байтов.

Вопросы:

  • Что оператор сравнения > делает с GUID в запросе ADSI?
  • Есть ли способзаставить мою стратегию подкачки работать с GUID?
  • Есть ли другие способы решения проблемы подкачки? Другие схемы разделов?

(В случае, если это имеет значение, моей реальной платформой будет Сервисные интерфейсы Active Directory Связанный сервер внутри SQL Server.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...