我正在使用 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驱动程序向XmlADO 提供一种数据类型为adLongVarWChar,一个 unicode 字符串:
field.Type_ = 203 //adLongVarWChar
其中VARIANT包含的field.Value是 a WideString(技术上称为 a BSTR):
TVarData(field.Value).vtype = 8 //VT_BSTR
在我看来,这是 ADO(Windows 7 SP1)中的一个错误,而不是我可以修复的问题。
我该如何解决?