| Предыдущий | Следующий |
| QUERY_E_ALLNOISE | QUERY_E_TIMEDOUT |
QUERY_E_TOOCOMPLEX
Точка в workflow
Практический смысл QUERY_E_TOOCOMPLEX (0X80041606): план запроса превышает предел сложности движка. В трассировке отделяйте маркер «toocomplex» от последующих wrapper/UI ошибок: они могут появиться уже после первичной границы и не объясняют исходное состояние.
Диагностический пакет
До повторной попытки запишите query scope, restriction/sort/output columns, catalog state и locale/code page. Для условия «план запроса превышает предел сложности движка» эти данные важнее общего текста сообщения, потому что позволяют связать результат с конкретным владельцем операции.
- точную сериализованную строку/список свойств, реально переданный парсеру.
- позицию токена, quote/delimiter state, locale и code page.
- canonical property name/type и schema/catalog generation.
| Наблюдение | Что оно означает |
|---|---|
| Первый вызов возвращает QUERY_E_TOOCOMPLEX | Граница «план запроса превышает предел сложности движка» относится к текущему объекту и generation; сохраните это состояние до cleanup. |
| После одного целевого изменения код исчезает | Связь с условием «план запроса превышает предел сложности движка» подтверждается только если остальные входы и owning context не изменились. |
| Первым становится другой HRESULT | Считайте его новой первичной границей; маркер «toocomplex» больше не должен подменять причину следующего отказа. |
Специфическая проверка для этого кода
Сохраните число restriction nodes, joins/grouping/sort keys и размер serialized query. Этот код относится к complexity limit до/во время plan construction. Контроль — удалять по одной ветви expression до перехода через лимит, не меняя catalog contents.
Контрольный запуск
Контрольный запуск должен воспроизводить «план запроса превышает предел сложности движка» на тех же исходных данных. Затем исправьте конкретный parser/query/property-list input, сохранив тот же catalog/schema context. Если операция проходит прежнюю стадию, гипотеза локализована; если нет — вернитесь к первому HRESULT и сохранённым полям.
- Зафиксируйте первый
QUERY_E_TOOCOMPLEXи объект, которому принадлежит маркер «toocomplex». - Сохраните входные данные и lifecycle-state до изменения условия «план запроса превышает предел сложности движка».
- Измените только состояние, связанное с «план запроса превышает предел сложности движка», и выполните тот же вызов ещё раз.
Завершение проверки
Не пересоздавайте catalog до проверки restriction/sort/output scope, действительно вернувшего этот код. Исправление считается реальным, когда прежняя граница «план запроса превышает предел сложности движка» пройдена на сопоставимом входе, а не просто скрыта более общим сообщением.
Документация
- Microsoft: Indexing Service query-execution values.
- Microsoft: Windows Search WHERE clause.
- Microsoft: Windows Search SQL syntax.
- Microsoft: ISearchQueryHelper.
Нужно найти другой код? Найти другой код состояния или ошибки.
