Freigeben über


MSSQLSERVER_2814

Neu: 17. November 2008

Details

Produktname

SQL Server

Produktversion

9.0

Buildnummer des Produkts

 

Ereignis-ID

2814

Ereignisquelle

MSSQLSERVER

Komponente

SQLEngine

Symbolischer Name

PR_POSSIBLE_INFINITE_RECOMPILE

Meldungstext

Es wurde eine mögliche unbegrenzte Neukompilierung für SQLHANDLE %hs, PlanHandle %hs, Startoffset %d, Endoffset %d festgestellt. Die letzte Ursache für die Neukompilierung war %d.

Erklärung

Aufgrund mindestens einer Anweisung wurde der Abfragebatch mindestens 50-mal neu kompiliert. Die angegebene Anweisung sollte korrigiert werden, um weitere Neukompilierungen zu vermeiden.

In der folgenden Tabelle werden die Ursachen für die Neukompilierung aufgelistet.

Ursachencode Beschreibung

1

Schema geändert

2

Statistiken geändert

3

Verzögerte Kompilierung

4

Festgelegte Option geändert

5

Temp. Tabelle geändert

6

Remote-Rowset geändert

7

For Browse-Berechtigungen geändert

8

Abfragebenachrichtigungsumgebung geändert

9

Partitionierte Sicht geändert

10

Cursoroptionen geändert

11

Option (recompile) angefordert

Benutzeraktion

  1. Zeigen Sie die Anweisung an, die die Neukompilierung verursacht, indem Sie die folgende Abfrage ausführen. Ersetzen Sie die Platzhalter in spitzen Klammern (< >) durch die in der Fehlermeldung angegebenen Werte. Beachten Sie, dass die Spalten database_name und object_name für Ad-hoc- und vorbereitete SQL-Anweisungen den Wert NULL haben.

    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. Ändern Sie auf Grundlage der Beschreibung des Ursachencodes die Anweisung, den Batch oder die Prozedur, um Neukompilierungen zu vermeiden. Eine gespeicherte Prozedur kann z. B. eine oder mehrere SET-Anweisungen enthalten. Diese Anweisungen sollten aus der Prozedur entfernt werden. Weitere Beispiele für die Ursachen von Neukompilierungen und Lösungen finden Sie unter Batch Compilation, Recompilation, and Plan Caching Issues in SQL Server 2005.

  3. Wenn das Problem wiederholt auftritt, wenden Sie sich an den Microsoft-Kundendienst.

Siehe auch

Andere Ressourcen

SQL:StmtRecompile (Ereignisklasse)

Hilfe und Informationen

Informationsquellen für SQL Server 2005