SQL-Neukompilierung

Microsoft.SQLServer.2008.DBEngine.SQLReCompilationMonitor (UnitMonitor)

SQL-Neukompilierung für 2008-Datenbankmodul

Knowledge Base article:

Zusammenfassung

Monitor für SQL-Neukompilierung für SQL 2008-Datenbankmodul

Bestimmte Änderungen in einer Datenbank können dazu führen, dass ein Ausführungsplan basierend auf dem neuen Status der Datenbank ineffizient oder ungültig ist. SQL Server erkennt die Änderungen, die einen Ausführungsplan ungültig machen, und kennzeichnet den Plan als ungültig. Für die nächste Verbindung, die die Abfrage ausführt, muss dann ein neuer Plan kompiliert werden.

Ursachen

Hohe Anzahl Neukompilierungen im Vergleich zu Kompilierungen.

Lösungen

Starten Sie SQL Profiler und überprüfen Sie die Ablaufverfolgung "SQL:StmtRecompile", um die Ursache des Problems zu identifizieren.

Überschreibbare Parameter

Name

Beschreibung

Standardwert

Warnungspriorität

Definiert die Warnungspriorität.

Normal

Warnungsschweregrad

Definiert den Warnungsschweregrad.

Warnung

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Nein

Generiert Warnungen

Definiert, ob der Workflow eine Warnung generiert.

Ja

Intervall (Sekunden)

Das periodische Intervall in Sekunden, in dem der Workflow ausgeführt werden soll.

300

Anzahl der Stichproben

Anzahl der Stichproben im Durchschnitt vor dem Vergleich mit dem Schwellenwert

6

Synchronisierungszeit

Die in einem 24-Stunden-Format angegebene Synchronisierungszeit. Kann ausgelassen werden.

00:10

Schwellenwert

Wenn das Verhältnis zwischen SQL-Neukompilierung und SQL-Kompilierung diesen Schwellenwert übersteigt, wird eine Warnung generiert

25

Timeout (Sekunden)

Gibt die Zeit an, die der Workflow ausgeführt werden darf, bevor er geschlossen und als fehlgeschlagen markiert wird.

200

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.DBEngine.SQLReCompilation.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
SQL 2008-Datenbankneukompilierung ist zu hoch
SQL-Instanz "{0}" SQL-Neukompilierung auf dem Computer "{1}" ist zu hoch. Ausführliche Informationen finden Sie auf der Registerkarte "Warnungskontext".
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.DBEngine.SQLReCompilationMonitor" Accessibility="Public" Enabled="false" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.DBEngine.SQLReCompilation.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.DBEngine.SQLReCompilationMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Normal" MonitorTypeStateID="Normal" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>300</IntervalSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<Threshold>25</Threshold>
<NumSamples>6</NumSamples>
<SyncTime/>
</Configuration>
</UnitMonitor>