MSSQLSERVER_2814

Подробные сведения

Название продукта

SQL Server

Версия продукта

10.0

Номер сборки продукта

Идентификатор события

2814

Источник события

MSSQLSERVER

Компонент

SQLEngine

Символьное имя

PR_POSSIBLE_INFINITE_RECOMPILE

Текст сообщения

Обнаружена возможная бесконечная перекомпиляция для SQLHANDLE %hs, PlanHandle %hs, начиная со смещения %d до смещения %d. Причиной последней перекомпиляции было %d.

Пояснение

Одна или несколько инструкций вызвали перекомпиляцию пакета запросов по крайней мере 50 раз. Необходимо исправить указанную инструкцию, чтобы избежать дальнейшей перекомпиляции.

В следующей таблице приводятся причины перекомпиляции.

Код причины

Описание

1

Изменение схемы

2

Изменение статистики

3

Отложенная компиляция

4

Изменение параметра SET

5

Изменение временной таблицы

6

Изменение удаленного набора строк

7

Изменение разрешений FOR BROWSE

8

Изменение среды уведомлений о запросах

9

Изменение секционированного представления

10

Изменение параметров курсора

11

Запрошено OPTION (RECOMPILE)

Действия пользователя

  1. Просмотрите инструкцию, вызывающую перекомпиляцию, запустив следующий запрос. Замените местозаполнители sql_handle, starting_offset, ending_offset и plan_handle значениями, указанными в сообщении об ошибке. Обратите внимание, что столбцы database_name и object_name будут пустыми для нерегламентированных и подготовленных инструкций Transact-SQL.

    SELECT DB_NAME(st.dbid) AS database_name

    , OBJECT_NAME(st.objectid) AS object_name

    , st.text

    FROM sys.dm_exec_query_stats AS qs

    CROSS APPLY sys.dm_exec_sql_text (sql_handle) AS st

    WHERE qs.statement_start_offset = starting_offset

    AND qs.statement_end_offset = ending_offset

    AND qs.plan_handle = plan_handle;

  2. В зависимости от описания кода причины измените инструкцию, пакет или процедуру, чтобы избежать перекомпиляции. Например, хранимая процедура может содержать одну или несколько инструкций SET. Эти инструкции должны быть удалены из процедуры. Дополнительные примеры причин перекомпиляции и способов их устранения см. в разделе Компиляция пакета, повторная компиляция и проблемы кэширования плана в SQL Server 2005.

  3. Если ошибка повторится, обратитесь в службу поддержки пользователей Майкрософт.

См. также

Справочник