MSSQLSERVER_8632
Область применения: SQL Server
Сведения
Атрибут | Значение |
---|---|
Название продукта | SQL Server |
ИД события | 8632 |
Источник событий | MSSQLSERVER |
Компонент | SQLEngine |
Символическое имя | QUERY_EXPRESSION_TOO_COMPLEX |
Текст сообщения | Внутренняя ошибка: был достигнут предел служб выражений. Проверьте потенциально сложные выражения в запросе и постарайтесь их упростить. |
Описание
Ошибка 8632 возникает при выполнении запроса в SQL Server, содержащего большое количество идентификаторов и констант в одном выражении. Пользователю выводится сообщение об ошибке наподобие следующего:
Сервер: Msg 8632, level 17, State 2, Line 1
Внутренняя ошибка: был достигнут предел служб выражений. Проверьте потенциально сложные выражения в запросе и постарайтесь их упростить.
Причина
Эта проблема возникает, так как SQL Server ограничивает количество идентификаторов и констант, которые могут содержаться в одном выражении запроса. Превышение этого количества приводит к ошибке SQL Server (ошибка 8632). Например, следующий запрос содержит только одно выражение:
select a, b + c, d + e
Это выражение извлекает все пять столбцов, вычисляет операторы сложения и отправляет клиенту три спроецированных результата.
Тест на количество идентификаторов и констант выполняется после развертывания SQL Server всех ссылочных идентификаторов и констант. Например, могут развертываться следующие элементы:
- звездочка (*) в списке выбора;
- представление;
- определение вычисляемого столбца.
Если число идентификаторов и констант после развертывания превышает ограничение, выполнить запрос невозможно.
Действие пользователя
Для обхода этой проблемы измените запрос. Используйте меньше идентификаторов и констант в самом большом выражении в запросе. Количество идентификаторов и констант в каждом выражении запроса не должно превышать ограничение. Для этого может потребоваться разбить запрос на несколько отдельных с временными промежуточными результатами.