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 как строка?

0 ответов

Другие вопросы по тегам