我正在使用 ADO 和“本机”驱动程序之一(例如SQLNCLI
, SQLNCLI10
)SQLNCLI11
连接到 SQL Server(而不是旧版SQLOLEDB
驱动程序)。
ADO 不理解XML
本机驱动程序公开的 SQL Server 数据类型:
field: ADOField;
field := recordset.Fields.Items["SomeXmlColumn"];
尝试访问field.Value
会引发EOleException
:
- 来源:微软光标引擎
- 错误代码: 0x80040E21 (E_ITF_0E21)
- 消息:多步操作生成错误。检查每个状态值
本机客户端驱动程序(例如SQLNCLI
, SQLNCLI10
)向 ADOSQLNCLI11
呈现Xml
数据类型为
field.Type_ = 141 //???
而旧版SQLOLEDB
驱动程序向Xml
ADO 提供一种数据类型为adLongVarWChar,一个 unicode 字符串:
field.Type_ = 203 //adLongVarWChar
其中VARIANT
包含的field.Value
是 a WideString
(技术上称为 a BSTR
):
TVarData(field.Value).vtype = 8 //VT_BSTR
在我看来,这是 ADO(Windows 7 SP1)中的一个错误,而不是我可以修复的问题。
我该如何解决?