Interner Fehler des Abfrageprozessors: Dem Abfrageprozessor stand während der Abfrageoptimierung zu wenig Stapelspeicherplatz zur Verfügung

Microsoft.SQLServer.2012.Internal_Query_Processor_Error__The_query_processor_ran_out_of_stack_space_during_query_optimization_1_5_Rule (Rule)

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.

Überschreibbare Parameter

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.2012.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8621
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
Interner Fehler des Abfrageprozessors: Dem Abfrageprozessor stand während der Abfrageoptimierung zu wenig Stapelspeicherplatz zur Verfügung
{0}
Event LogApplication
CommentMom2012ID='{100AE678-D3DD-4FFD-B3E5-F9E1B03229E7}';MOM2012GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.2012.Internal_Query_Processor_Error__The_query_processor_ran_out_of_stack_space_during_query_optimization_1_5_Rule" Target="SQL2012Core!Microsoft.SQLServer.2012.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2012ID='{100AE678-D3DD-4FFD-B3E5-F9E1B03229E7}';MOM2012GroupID={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" RunAs="SQL!Microsoft.SQLServer.SQLDefaultAccount">
<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="SQL!Microsoft.SQLServer.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.2012.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>