Je vais avoir une exigence où j'enregistrer un ensemble de données qui a plusieurs tables dans une colonne XML de table SQL en convertissant en un XML.Enregistrement d'un énorme ensemble de données dans la table SQL dans une colonne XML - MS SQL, C# .Net
Le problème est que dans certains cas, l'ensemble de données se développe très énorme et je reçois OutOfMemoryException.
Ce que je fais est essentiellement que je convertir l'ensemble de données dans un fichier xml et enregistrez-le sur le disque local, puis charger le nouveau XML et de l'envoyer comme paramètre de procédure stockée. Mais quand j'écris l'ensemble de données xml dans le disque, la taille du fichier dépasse 700 Mo et quand je le charge dans l'objet XMLDocument en mémoire, je reçois OutOfMemoryException.
Comment obtenir le xml du jeu de données sans l'enregistrer dans un fichier et relire encore?
code pour la lecture du XML à partir du jeu de données
MemoryStream msXML = new MemoryStream();
MemoryStream msXMLSchema = new MemoryStream();
XmlWriter xmlWriter = XmlWriter.Create(msXML);
XmlWriter xmlSchemaWriter = XmlWriter.Create(msXMLSchema);
dsContract.WriteXml(xmlWriter);
dsContract.WriteXmlSchema(xmlSchemaWriter);
xmlWriter.WriteStartDocument();
xmlWriter.WriteEndDocument();
xmlSchemaWriter.WriteStartDocument();
xmlSchemaWriter.WriteEndDocument();
XmlReader xmlReader = XmlReader.Create(msXML);
XmlReader xmlSchemaReader = XmlReader.Create(msXMLSchema);
XmlDocument contractHistoryXMLDoc = new XmlDocument();
XmlDocument contractHistoryXMLSchemaDoc = new XmlDocument();
contractHistoryXMLDoc.Load(xmlReader);
contractHistoryXMLSchemaDoc.Load(xmlReader);
code permettant d'enregistrer les données XML dans le fichier XML Colonne
Les envoyer comme paramètres USP
param = new SqlParameter("@XmlValue", SqlDbType.Xml);
param.Direction = ParameterDirection.Input;
param.Value = new XmlNodeReader(historyXML);
sqlcom.Parameters.Add(param);
param = new SqlParameter("@xmlSchemaHistory", SqlDbType.Xml);
param.Direction = ParameterDirection.Input;
param.Value = new XmlNodeReader(historyXMLSchema);
sqlcom.Parameters.Add(param);
Merci
NLV
Indiquez le code d'enregistrement du fichier dans la base de données. – Oded
J'ai ajouté le code maintenant. – NLV