MSSQLSERVER_2814

詳細資料

產品名稱

SQL Server

產品版本

10.50

產品組建編號

 

事件識別碼

2814

事件來源

MSSQLSERVER

元件

SQLEngine

符號名稱

PR_POSSIBLE_INFINITE_RECOMPILE

訊息文字

偵測到 SQLHANDLE %hs、PlanHandle %hs、起始位移 %d、結尾位移 %d 可能發生無限重新編譯。上次重新編譯的原因是 %d。

說明

一或多個陳述式導致此查詢批次重新編譯至少 50 次。為了避免進一步重新編譯,您應該更正指定的陳述式。

下表列出重新編譯的原因。

原因代碼

說明

1

結構描述已變更

2

統計資料已變更

3

延遲編譯

4

Set 選項已變更

5

Temp 資料表已變更

6

遠端資料列集已變更

7

For Browse 權限已變更

8

查詢通知環境已變更

9

資料分割檢視已變更

10

資料指標選項已變更

11

已要求選項 (重新編譯)

使用者動作

  1. 您可以執行下列查詢來檢視導致重新編譯的陳述式。請將 sql_handle、starting_offset、ending_offset 和 plan_handle 預留位置取代成錯誤訊息中指定的值。請注意,特定和準備 Transact-SQL 陳述式的 database_nameobject_name 資料行將成為 NULL。

    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. 如果持續發生問題,請連絡 Microsoft 客戶支援服務。