MSSQL unter Windows: Nicht genügend Speicherplatz für SQL Server

Microsoft.SQLServer.Windows.EventRule.DBEngine.EventCollectionRule.DBEngine.SQLServerOutOfMemory (Rule)

SQL Server konnte nicht genügend Arbeitsspeicher zuweisen, um die Abfrage auszuführen.

Knowledge Base article:

Zusammenfassung

SQL Server konnte nicht genügend Arbeitsspeicher zuweisen, um die Abfrage auszuführen.

Ursachen

Dieses Problem kann viele verschiedene Ursachen haben und u. a. auf Betriebssystemeinstellungen, die Verfügbarkeit physischen Speichers oder Arbeitsspeicherbegrenzungen für die aktuelle Arbeitsauslastung zurückzuführen sein. Meistens ist die Transaktion, die nicht ausgeführt werden kann, nicht die Fehlerursache. Fehler bei Diagnoseabfragen, wie z. B. DBCC-Anweisungen, können dadurch verursacht werden, dass der Server nicht über genügend Arbeitsspeicher verfügt.

Die Speichernutzung durch speicheroptimierte SQL Server-Daten unterscheidet sich von der Speichernutzung durch SQL Server. Es kann vorkommen, dass die von Ihnen installierte und für speicheroptimierte Daten zugewiesene Speichermenge Ihren gestiegenen Anforderungen nicht mehr entspricht. In diesem Fall ist möglicherweise nicht genügend Arbeitsspeicher vorhanden.

Lösungen

Hinweise zur Vermeidung von Situationen mit unzureichendem Arbeitsspeicher finden Sie auch im Thema "Überwachung und Problembehebung bei der Arbeitsspeichernutzung".

Extern

Ausführlichere Informationen zu diesem Problem finden Sie unter: Beheben von OOM-Problemen (nicht genügend Arbeitsspeicher)

Überschreibbare Parameter

Name

Beschreibung

Standardwert

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Ja

Intervall (Sekunden)

Gibt das Wiederholungsintervall in Sekunden für die Ausführung des Workflows an.

300

Priorität

Definiert die Warnungspriorität.

1

Schweregrad

Definiert den Warnungsschweregrad.

2

Synchronisierungszeit

Synchronisierungszeit

 

Timeout (Sekunden)

Gibt die Zeit an, zu der der Workflow ausgeführt werden dann, bevor er geschlossen und als fehlerhaft markiert wird.

200

Timeout für Datenbankverbindung (Sekunden)

Es tritt ein Fehler beim Workflow auf, und ein Ereignis wird registriert, wenn der Workflow nicht innerhalb des angegebenen Zeitraums auf die Datenbank zugreifen kann.

15

Element properties:

TargetMicrosoft.SQLServer.Windows.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL unter Windows: SQL Server konnte nicht genügend Arbeitsspeicher zuweisen, um die Abfrage auszuführen.
{0}
CommentMom2017ID='{2531CFA5-7EF0-4B45-AAA1-DAE73294DFF6}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.Windows.EventRule.DBEngine.EventCollectionRule.DBEngine.SQLServerOutOfMemory" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{2531CFA5-7EF0-4B45-AAA1-DAE73294DFF6}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="DS" Comment="DS" TypeID="Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered">
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>701</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Windows.EventRule.DBEngine.EventCollectionRule.DBEngine.SQLServerOutOfMemory.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter3>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>