MSSQL 2016 : SQL Server ne dispose plus de mémoire

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

SQL Server n'est pas parvenu à allouer la quantité suffisante de mémoire pour exécuter la requête.

Knowledge Base article:

Résumé

SQL Server n'est pas parvenu à allouer la quantité suffisante de mémoire pour exécuter la requête.

Causes

Cette erreur peut être causée par de nombreux facteurs, notamment les paramètres du système d’exploitation, la disponibilité de la mémoire physique ou les limites de mémoire pour la charge de travail en cours. Dans la plupart des cas, la transaction qui a échoué n’est pas la cause de cette erreur. Les requêtes de diagnostic, comme des instructions DBCC, peuvent échouer parce que le serveur ne dispose pas de suffisamment de mémoire.

Les données à mémoire optimisée de SQL Server utilisent plus de mémoire que SQL Server et différemment de SQL Server. Il est possible que la quantité de mémoire que vous avez installée et allouée pour les données à mémoire optimisée devienne inadéquate pour vos besoins croissants. Si c’est le cas, la mémoire pourrait s’avérer insuffisante.

Solutions

Consultez l’article Analyse et dépannage de l’utilisation de mémoire pour des conseils pouvant vous aider à éviter de nombreuses situations d’épuisement de la mémoire.

Externe

Pour plus d'informations sur ce problème : Résolution des problèmes de mémoire insuffisante

Paramètres remplaçables

Nom

Description

Valeur par défaut

Activé

Active ou désactive le flux de travail.

Oui

Priorité

Définit la priorité de l'alerte.

1

Severité

Définit la gravité de l'alerte.

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 n'est pas parvenu à allouer la quantité suffisante de mémoire pour exécuter la requête
{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>