SqlXml создает исключение NullReferenceException
У меня проблема.:(
MS SQL Server 2016 13.0.15900.1.NET Framework 4.5.2
- Есть таблица с большими полями xml (> 1 мб)
- Ужасная процедура, которая читает, изменяет и обновляет [xmlField] с помощью (вне) XPath
- Процедура выбирает [xmlField] из [myTable], где [id] = @id
- И динамический SQL-запрос с (readuncommitted, nolock).
Ужасная процедура и динамический запрос работают нормально. Процедура, которая выбирает [xmlField], приводит к исключению NullReferenceException в System.Data.dll.
Object reference not set to an instance of an object. at System.Xml.XmlSqlBinaryReader.ScanAttributes()
at System.Xml.XmlSqlBinaryReader.ImplReadElement()
at System.Xml.XmlSqlBinaryReader.ReadDoc()
at System.Xml.XmlSqlBinaryReader.Read()
at System.Xml.XmlWriter.WriteNode(XmlReader reader, Boolean defattr)
at System.Data.SqlTypes.SqlXml.get_Value()
at System.Data.SqlClient.SqlDataReader.GetValue(Int32 i)
at System.Data.SqlClient.SqlCommand.CompleteExecuteScalar(SqlDataReader ds, Boolean returnSqlValue)
at System.Data.SqlClient.SqlCommand.ExecuteScalar()
Что, черт возьми, происходит и как я могу избежать этого?
Вероятно, мы читаем только часть XML, которая не успела зарегистрироваться до конца, что приводит к повреждению xml-документа. Но как тогда это можно обойти? Работаете с XML как строка?