XML: Das XML-Dokument konnte nicht erstellt werden, da auf dem Server nicht genügend Arbeitsspeicher zur Verfügung steht. Geben Sie XML-Dokumente mithilfe von "sp_xml_removedocument" frei

Microsoft.SQLServer.2008.XML___XML_document_could_not_be_created_because_server_memory_is_low._Use_sp_xml_removedocument_to_release_XML_documents_1_5_Rule (Rule)

Knowledge Base article:

Zusammenfassung

Wenn Sie sp_xml_preparedocument ausführen, wird ein analysiertes XML-Dokument im internen Cache von SQL Server 2000 gespeichert. Der MSXML-Parser beansprucht bis zu einem Achtel des insgesamt für SQL Server verfügbaren Arbeitsspeichers. Der Teil des Caches, der für MSXML reserviert ist, bietet nicht genug Arbeitsspeicher, um das in der gespeicherten Prozedur sp_xml_preparedocument angegebene Dokument zu öffnen. Dies kann daran liegen, dass das angegebene Dokument sehr groß ist oder dass aufgrund von Dokumenten, die bereits in den Arbeitsspeicher geladen wurden, nicht mehr genug Speicher für das neue Dokument verfügbar ist.

Weitere Informationen zum Analysieren von XML-Dokumenten finden Sie in den Themen zu sp_xml_preparedocument und sp_xml_removedocument in der Onlinedokumentation.

Lösungen

Führen Sie sp_xml_removedocument aus, um Dokumente aus dem Arbeitsspeicher zu entfernen. Stellen Sie sicher, dass der Code stets sp_xml_removedocument aufruft, sobald die Verarbeitung eines Dokuments abgeschlossen ist. Der Code sollte auch die Möglichkeit berücksichtigen, dass eine Verbindung oder Transaktion zwischen den Aufrufen von sp_xml_preparedocument und sp_xml_removedocument unterbrochen wird. Um dies zu erreichen, kann es notwendig sein, Handles für geöffnete Dokumente in einer Tabelle zu speichern, wo Sie auf die Handles verweisen können, falls ein Batch unterbrochen wird.

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID6624
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
XML: Das XML-Dokument konnte nicht erstellt werden, da auf dem Server nicht genügend Arbeitsspeicher zur Verfügung steht. Geben Sie XML-Dokumente mithilfe von "sp_xml_removedocument" frei
{0}
Event LogApplication
CommentMom2008ID='{136A2E5E-A460-4FAE-8587-D72C945E89EB}';MOM2008GroupID={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.2008.XML___XML_document_could_not_be_created_because_server_memory_is_low._Use_sp_xml_removedocument_to_release_XML_documents_1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{136A2E5E-A460-4FAE-8587-D72C945E89EB}';MOM2008GroupID={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>6624</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2008.XML___XML_document_could_not_be_created_because_server_memory_is_low._Use_sp_xml_removedocument_to_release_XML_documents_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>