MSSQL sur Linux : XML : impossible de créer le document XML, car la mémoire du serveur est insuffisante. Utilisez sp_xml_removedocument pour libérer des documents XML

Microsoft.SQLServer.Linux.EventRule.DBEngine.XML___XML_document_could_not_be_created_because_server_memory_is_low._Use_sp_xml_removedocument_to_release_XML_documents_1_5_Rule (Rule)

Lorsque vous exécutez sp_xml_preparedocument, un document XML analysé est stocké dans le cache interne de SQL Server 2000. L'analyseur MSXML utilise jusqu'à un huitième de la mémoire totale disponible pour SQL Server. Il n'y a pas assez de mémoire dans la portion de cache allouée à MSXML pour ouvrir le document spécifié dans l'instruction sp_xml_preparedocument. Cela peut provenir du fait que le document spécifié est très volumineux ou que les documents déjà présents dans l'espace mémoire ne laissent pas suffisamment de place pour le nouveau document.

Knowledge Base article:

Résumé

Lorsque vous exécutez sp_xml_preparedocument, un document XML analysé est stocké dans le cache interne de SQL Server 2000. L’analyseur MSXML utilise jusqu’à un huitième de la mémoire totale disponible pour SQL Server. Il n’y a pas assez de mémoire dans la portion de cache allouée à MSXML pour ouvrir le document spécifié dans l’instruction sp_xml_preparedocument. Cela peut provenir du fait que le document spécifié est très volumineux ou que les documents déjà présents dans l’espace mémoire ne laissent pas suffisamment de place pour le nouveau document.

Pour plus d'informations sur l'analyse de documents XML, voir « sp_xml_preparedocument » et « sp_xml_removedocument » dans la documentation en ligne.

Solutions

Exécutez sp_xml_removedocument pour supprimer des documents de la mémoire. Vérifiez que votre code appelle systématiquement sp_xml_removedocument lorsque vous avez terminé le traitement d’un document. Dans votre code, tenez compte du fait qu’une connexion ou transaction peut être interrompue entre les appels sp_xml_preparedocument et sp_xml_removedocument. Pour ce faire, vous pouvez stocker dans une table des descripteurs de documents ouverts où vous pouvez les référencer en cas d’interruption d’un lot d’instructions.

Paramètres remplaçables

Nom

Description

Valeur par défaut

Activé

Active ou désactive le flux de travail.

Oui

Intervalle (en secondes)

Intervalle régulier (en secondes) auquel exécuter le flux de travail.

300

Priorité

Définit la priorité de l'alerte.

1

Severité

Définit la gravité de l'alerte.

1

Heure de synchronisation

Heure de synchronisation

 

Délai d'expiration (secondes)

Spécifie la durée pendant laquelle le flux de travail est autorisé à s'exécuter avant d'être fermé et marqué comme ayant échoué.

200

Délai d’attente pour la connexion de base de données (secondes)

Le workflow échoue et enregistre un événement s’il ne peut pas accéder à la base de données pendant la période spécifiée.

15

Element properties:

TargetMicrosoft.SQLServer.Linux.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL sur Linux : XML : impossible de créer le document XML, car la mémoire du serveur est insuffisante. Utilisez sp_xml_removedocument pour libérer des documents XML
{0}
CommentMom2017ID='{136A2E5E-A460-4FAE-8587-D72C945E89EB}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.SQLServer.Linux.DataSource.EventCollectionFiltered Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.Linux.EventRule.DBEngine.XML___XML_document_could_not_be_created_because_server_memory_is_low._Use_sp_xml_removedocument_to_release_XML_documents_1_5_Rule" Target="SqlDiscL!Microsoft.SQLServer.Linux.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{136A2E5E-A460-4FAE-8587-D72C945E89EB}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Microsoft.SQLServer.Linux.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>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>6624</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Linux.EventRule.DBEngine.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>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>