MSSQL 2016: la memoria di SQL Server è insufficiente

Microsoft.SQLServer.2016.EventCollectionRule.DBEngine.SQLServerOutOfMemory (Rule)

SQL Server non è riuscito ad allocare la quantità di memoria sufficiente per eseguire la query.

Knowledge Base article:

Riepilogo

SQL Server non è riuscito ad allocare la quantità di memoria sufficiente per eseguire la query.

Cause

Il problema può essere causato da diversi motivi, tra cui le impostazioni del sistema operativo, la disponibilità della memoria fisica o i limiti di memoria per il carico di lavoro corrente. Nella maggior parte dei casi la transazione non riuscita non è la causa di questo errore. Le query di diagnostica, ad esempio le istruzioni DBCC, possono non riuscire poiché la memoria del server non è sufficiente

I dati con ottimizzazione per la memoria di SQL Server usano più memoria e in maniera diversa rispetto a SQL Server. È possibile che la quantità di memoria installata e allocata per i dati con ottimizzazione per la memoria diventi insufficiente per soddisfare le esigenze crescenti. In tal caso, potrebbero verificarsi problemi a causa della memoria esaurita.

Soluzioni

Per le linee guida che consentono di evitare molte situazioni di memoria insufficiente, vedere l'argomento Monitorare e risolvere i problemi relativi all'utilizzo della memoria.

Risorse esterne

Per altre informazioni dettagliate su questo problema, vedere Risolvere i problemi di memoria insufficiente

Parametri di cui è possibile eseguire l'override

Nome

Descrizione

Valore predefinito

Abilitato

Abilita o disabilita il flusso di lavoro.

Priorità

Definisce la priorità dell'avviso.

1

Gravità

Definisce la gravità dell'avviso.

2

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID701
Event Source$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016: SQL Server non è riuscito ad allocare la quantità di memoria sufficiente per eseguire la query
{0}
Event LogApplication
CommentMom2016ID='{2531CFA5-7EF0-4B45-AAA1-DAE73294DFF6}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.EventProvider Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.2016.EventCollectionRule.DBEngine.SQLServerOutOfMemory" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2016ID='{2531CFA5-7EF0-4B45-AAA1-DAE73294DFF6}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>701</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2016.EventCollectionRule.DBEngine.SQLServerOutOfMemory.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>