MSSQL 2016: Interner Fehler des Abfrageprozessors: Der Abfrageprozessor hatte während der Abfrageoptimierung zu wenig Stapelspeicherplatz

Microsoft.SQLServer.2016.Internal_Query_Processor_Error__The_query_processor_ran_out_of_stack_space_during_query_optimization_1_5_Rule (Rule)

Der Abfrageprozessor verwendet beim Optimieren von Abfragen einen großen, jedoch begrenzten Speicherstapel. In einigen Extremsituationen kann die Größe des Stapels eine sehr große Abfrage beschränken, z. B. eine Abfrage mit einer Inlist-Prozedur mit 100.000 Konstanten.

Knowledge Base article:

Ursachen

Der Abfrageprozessor verwendet beim Optimieren von Abfragen einen großen, jedoch begrenzten Speicherstapel. In einigen Extremsituationen kann die Größe des Stapels eine sehr große Abfrage beschränken, z. B. eine Abfrage mit einer Inlist-Prozedur mit 100.000 Konstanten.

Lösungen

Vereinfachen Sie die Abfrage, um dieses Problem zu vermeiden. Verwenden Sie beispielsweise im Fall einer extrem großen Inlist-Prozedur eine temporäre Tabelle oder eine Tabellenvariable zum Speichern der Konstanten. Schreiben Sie die Abfrage zudem neu, sodass stattdessen diese Variable oder temporäre Tabelle verwendet wird.

Parameter, die außer Kraft gesetzt werden können

Name

Beschreibung

Standardwert

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Ja

Priorität

Definiert die Warnungspriorität.

1

Schweregrad

Definiert den Warnungsschweregrad.

2

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8621
Event Source$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016: Interner Fehler des Abfrageprozessors: Der Abfrageprozessor hatte während der Abfrageoptimierung zu wenig Stapelspeicherplatz
{0}
Event LogApplication
CommentMom2016ID='{100AE678-D3DD-4FFD-B3E5-F9E1B03229E7}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.2016.Internal_Query_Processor_Error__The_query_processor_ran_out_of_stack_space_during_query_optimization_1_5_Rule" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2016ID='{100AE678-D3DD-4FFD-B3E5-F9E1B03229E7}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" 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>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>8621</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.Internal_Query_Processor_Error__The_query_processor_ran_out_of_stack_space_during_query_optimization_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>