Esegue il monitoraggio dell'impostazione Aggiornamento automatico statistiche per il database. Nota: per impostazione predefinita, questo monitoraggio è disabilitato. Usare gli override per abilitarlo quando necessario.
Questo monitoraggio controlla l'impostazione Aggiornamento automatico statistiche per il database. Poiché tale monitoraggio appartiene a requisiti standard complessivi, se l'impostazione non corrisponde allo standard specificato verrà generato un avviso.
Per generare piani ottimali, è necessario che Query Optimizer disponga di statistiche aggiornate e accurate. Nella maggior parte dei casi, è consigliabile consentire a SQL Server la gestione delle statistiche. Se si disattivano le opzioni "Creazione automatica statistiche" e "Aggiornamento automatico statistiche", le statistiche dovranno essere mantenute aggiornate dall'utente. In caso contrario, le prestazioni di esecuzione delle query risulteranno ridotte. Per la maggior parte delle applicazioni, è necessario che queste opzioni siano impostate su ON.
Se l'opzione Aggiornamento automatico statistiche è impostata su ON, Query Optimizer aggiorna le statistiche quando vengono usate da una query e quando potrebbero essere obsolete. Le statistiche diventano obsolete in seguito a operazioni di inserimento, aggiornamento, eliminazione o unione che modificano la distribuzione dei dati nella tabella o nella vista indicizzata. Query Optimizer determina che le statistiche potrebbero non essere aggiornate contando il numero di modifiche apportate ai dati dopo l'ultimo aggiornamento delle statistiche e confrontando il numero di modifiche con una soglia basata sul numero di righe nella tabella o nella vista indicizzata. Query Optimizer controlla la presenza di statistiche non aggiornate prima di compilare una query e prima di eseguire un piano di query memorizzato nella cache. Prima di compilare una query, Query Optimizer usa le colonne, le tabelle e le viste indicizzate nel predicato di query per identificare le eventuali statistiche non aggiornate. Prima di eseguire un piano di query memorizzato nella cache, nel motore di database viene verificato che tale piano faccia riferimento alle statistiche aggiornate. L'opzione AUTO_UPDATE_STATISTICS si applica alle statistiche create per indici, colonne singole nei predicati di query e statistiche create con l'istruzione CREATE STATISTICS. Questa opzione si applica anche alle statistiche filtrate.
AUTO_UPDATE_STATISTICS {ON | OFF}
Se l'impostazione dell'opzione non corrisponde a quella richiesta, verrà generato un messaggio di avviso. Il monitoraggio è configurato per generare un avviso quando il valore di questa impostazione è "OFF".
Per risolvere il problema, effettuare una delle operazioni seguenti:
Modificare l'impostazione di configurazione per il database in modo che corrisponda al valore previsto.
Eseguire l'override del valore previsto per il monitoraggio unità per questo database specifico o per tutti i database.
In alternativa, se il monitoraggio non rappresenta un problema per il database, procedere nel modo seguente:
Disabilitare il monitoraggio usando gli override per questo database specifico o per tutti i database.
Disabilitare il monitoraggio della configurazione delle funzioni di aggregazione di livello principale usando gli override per questo database specifico o per tutti i database.
Per informazioni dettagliate su questa impostazione, vedere: Opzioni ALTER DATABASE SET (Transact-SQL)
Vedere anche " Utilizzo di statistiche per migliorare le prestazioni di esecuzione delle query".
Nome | Descrizione | Valore predefinito |
Priorità avviso | Definisce la priorità dell'avviso. | Normale |
Gravità avviso | Definisce la gravità dell'avviso. | Avviso |
Attivato | Abilita o disabilita il flusso di lavoro. | No |
Valore previsto | Valore previsto dell'impostazione di configurazione del database. Per visualizzare il set di valori affidabili, vedere la sezione "Configurazione" nell'articolo della Microsoft Knowledge Base relativo a questo monitoraggio. | SÌ |
Genera avvisi | Definisce se il flusso di lavoro genera un avviso. | Sì |
Intervallo (secondi) | Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro. | 43200 |
Tempo di sincronizzazione | Ora di sincronizzazione specificata usando il formato a 24 ore. Può essere omessa. |
|
Timeout (secondi) | Specifica il tempo di esecuzione consentito per il flusso di lavoro prima che venga chiuso e contrassegnato come non riuscito. | 300 |
Timeout per la connessione di database (secondi) | Il flusso di lavoro avrà esito negativo e registrerà un evento se non riesce ad accedere al database durante il periodo specificato. | 15 |
Target | Microsoft.SQLServer.Windows.Database | ||
Parent Monitor | Microsoft.SQLServer.Windows.Rollup.Database.AutomaticConfiguration | ||
Category | ConfigurationHealth | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.Windows.MonitorType.Database.DBConfigurationStatus | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.Database.AutoUpdateStatConfiguration" Accessibility="Public" Enabled="false" Target="SqlDiscW!Microsoft.SQLServer.Windows.Database" ParentMonitorID="Microsoft.SQLServer.Windows.Rollup.Database.AutomaticConfiguration" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.Database.DBConfigurationStatus" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.Database.AutoUpdateStatConfiguration.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ConfigurationValueOK" MonitorTypeStateID="ConfigurationValueOK" HealthState="Success"/>
<OperationalState ID="ConfigurationValueNotOK" MonitorTypeStateID="ConfigurationValueNotOK" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<DatabaseName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<ConfigName>AutoUpdateStat</ConfigName>
<ExpectedValue>ON</ExpectedValue>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>