Recompilation SQL

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

Recompilation SQL pour le moteur de base de données 2014. Remarque : cette règle est désactivée par défaut. Utilisez des remplacements afin de l’activer, le cas échéant.

Knowledge Base article:

Résumé

Analyse de recompilation SQL pour le moteur de base de données SQL 2014

Certaines modifications dans une base de données peuvent entraîner l'inefficacité ou la non-validité d'un plan d'exécution, selon le nouvel état de la base de données. SQL Server détecte les modifications qui rendent un plan d'exécution non valide et marque ce plan comme tel. Il faut donc recompiler un nouveau plan pour la prochaine connexion qui exécute la requête.

Causes

Nombre élevé de recompilations par comparaison aux compilations.

Solutions

Démarrez SQL Profiler et vérifiez la trace SQL:StmtRecompile afin d'identifier la cause première du problème.

Paramètres remplaçables

Nom

Description

Valeur par défaut

Activé

 

Non

Génère des alertes

 

Oui

Intervalle (en secondes)

L'intervalle de temps récurrent en secondes pendant lequel le workflow est exécuté.

300

Nombre d'échantillons

Indique le nombre de dépassements de seuil d'une valeur mesurée avant la modification de l'état.

6

Seuil

Si le rapport entre une recompilation SQL et une compilation SQL est supérieur à ce seuil, une alerte est générée

25

Délai d'expiration (en secondes)

Spécifie la durée pendant laquelle le workflow est autorisé à être exécuté avant d'être fermé et marqué comme un échec.

200

Element properties:

TargetMicrosoft.SQLServer.2014.DBEngine
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.DBEngine.SQLReCompilation.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2014 : la recompilation SQL est trop élevée
La recompilation SQL de l’instance SQL « {0} » sur l’ordinateur « {1} » est trop élevée. Pour plus d’informations, consultez l’onglet « Contexte de l’alerte ».
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.DBEngine.SQLReCompilationMonitor" Accessibility="Public" Enabled="false" Target="SQL2014Core!Microsoft.SQLServer.2014.DBEngine" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.DBEngine.SQLReCompilation.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.DBEngine.SQLReCompilationMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.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>
</Configuration>
</UnitMonitor>