Configurazione chiusura automatica

Microsoft.SQLServer.Linux.Monitor.Database.AutoCloseConfiguration (UnitMonitor)

Esegue il monitoraggio dell'impostazione Chiusura automatica per il database in Linux. Nota: per impostazione predefinita, questo monitoraggio è disabilitato. Usare gli override per abilitarlo quando necessario.

Knowledge Base article:

Riepilogo

Questo monitoraggio controlla l'impostazione Chiusura automatica per il database. Poiché tale monitoraggio appartiene a requisiti standard complessivi, se l'impostazione non corrisponde allo standard specificato verrà generato un avviso.

L'opzione AUTO_CLOSE è utile per i database desktop perché consente di gestire i file di database come normali file. I file possono essere spostati, copiati per creare backup o anche inviati tramite posta elettronica ad altri utenti. Tuttavia, quando il database è impostato su AUTOCLOSE = ON, un'operazione che avvia un arresto automatico del database comporta la cancellazione della cache dei piani per l'istanza di SQL Server. La cancellazione della cache dei piani comporta la ricompilazione di tutti i piani di esecuzione successivi e può causare un improvviso peggioramento temporaneo delle prestazioni di esecuzione delle query

Per il mirroring del database è necessario che AUTO_CLOSE sia OFF.

L'uso dell'impostazione di chiusura automatica risulta appropriato solo se si è certi che il modello di utilizzo dell'applicazione manterrà chiuso il database per periodi di tempo relativamente lunghi. L'uso dell'opzione AUTO_CLOSE impostata su ON potrebbe risultare vantaggioso in alcune situazioni in cui sono ospitati applicazioni in modalità utente singolo e database multi-tenancy. In tutti gli altri casi, un simile uso non è in genere consigliato, a meno che non si conoscano a fondo il comportamento dell'applicazione e i modelli di utilizzo.

  • Note su progettazione/implementazione - Tratte dalla documentazione online

  • Se il database non è avviato, le proprietà recuperate da Microsoft SQL Server mediante l'accesso diretto al database anziché mediante il recupero del valore dai metadati restituiranno NULL, ovvero se l'opzione AUTO_CLOSE è stata impostata su ON nel database oppure il database è offline.

Configurazione

Se l'opzione Chiusura automatica è impostata su ON, il database viene arrestato normalmente e le risorse corrispondenti vengono liberate dopo la disconnessione dell'ultimo utente.

AUTO_CLOSE {ON | OFF}

Cause

Se l'impostazione dell'opzione Chiusura automatica non corrisponde a quella richiesta, verrà generato un messaggio di avviso. Il monitoraggio è configurato per generare un avviso quando il valore di questa impostazione è "ON".

Risoluzioni

Per risolvere il problema, effettuare una delle operazioni seguenti:

In alternativa, se il monitoraggio non rappresenta un problema per il database, procedere nel modo seguente:

Parametri di cui è possibile eseguire l'override

Nome

Descrizione

Valore predefinito

Priorità avviso

Definisce la priorità dell'avviso.

Normale

Gravità avviso

Definisce la gravità dell'avviso.

Avviso

Abilitato

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.

NO

Genera avvisi

Definisce se il flusso di lavoro genera un avviso.

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

Element properties:

TargetMicrosoft.SQLServer.Linux.Database
Parent MonitorMicrosoft.SQLServer.Linux.Rollup.Database.AutomaticConfiguration
CategoryConfigurationHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Linux.MonitorType.Database.DBConfigurationStatus
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL in Linux: Errore di configurazione dell'impostazione Chiusura automatica
L'impostazione Chiusura automatica per il database "{0}" nell'istanza di SQL Server "{1}" nel computer "{2}" non è configurata in base alla procedura consigliata.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Linux.Monitor.Database.AutoCloseConfiguration" Accessibility="Public" Enabled="false" Target="SqlDiscL!Microsoft.SQLServer.Linux.Database" ParentMonitorID="Microsoft.SQLServer.Linux.Rollup.Database.AutomaticConfiguration" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Linux.MonitorType.Database.DBConfigurationStatus" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Linux.Monitor.Database.AutoCloseConfiguration.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</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>
<NetbiosComputerName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<DatabaseName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<ConfigName>AutoClose</ConfigName>
<ExpectedValue>OFF</ExpectedValue>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>