クエリで、SQL 関数を使用しています (xml 変換のために .NET 関数を呼び出します)。
SELECT ApplyXMLTransform((subquery which returns XML type), (subquery which gets the XSLT) FROM SomeTable
関数 ApplyXMLTransform が例外に遭遇すると、クエリ全体が爆発します...例外がレコードセット全体を破壊するのを防ぐ方法はありますか (クエリに関しては、マネージド コードで例外を処理するように関数を変更できることに気付きました)?
原因であるレコードを照会すると、例外を構成する無効な文字などが表示されないため、例外自体もミステリーです...しかし、それはワームの別の缶です...ここにエラーがあります:
Msg 6522, Level 16, State 1, Line 3
A .NET Framework error occurred during execution of user-defined routine or aggregate "ApplyXsltTransform":
System.Xml.XmlException: Invalid character in the given encoding. Line 21, position 417.
System.Xml.XmlException:
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.InvalidCharRecovery(Int32& bytesCount, Int32& charsCount)
at System.Xml.XmlTextReaderImpl.GetChars(Int32 maxCharsCount)
at System.Xml.XmlTextReaderImpl.ReadData()
at System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars)
at System.Xml.XmlTextReaderImpl.ParseText()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at System.Xml.XmlWriter.WriteNode(XmlReader reader, Boolean defattr)
at System.Data.SqlTypes.SqlXml.CreateMemoryStreamFromXmlReader(XmlReader reader)
at System.Data.SqlTypes.SqlXml..ctor(XmlReader value)
at NF.Sql.Extensions.XSLTTransform.Transform(SqlXml inputDataXML, SqlXml inputTransformXML)
.