You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VARCHAR(MAX)导致记录集后续字段读取返回NULL的技术咨询

ASP Classic读取SQL Server VARCHAR(MAX)字段后后续字段返回空值的问题

问题详情

表结构

SQL Server原表结构:

A INT
B VARCHAR(MAX)
C INT

ASP Classic执行代码

set RS = oConn.Execute("SELECT A,B,C FROM Table")

RS("A") returns A
RS("B") returns B
RS("C") returns ""

异常现象

  • 若先读取C字段,可正常获取其值;
  • 一旦读取B字段(VARCHAR(MAX)类型),后续所有记录集字段调用均返回空值。

临时解决方案

  • 调整表字段顺序,将VARCHAR(MAX)类型字段放在最后:
    A INT
    C INT
    B VARCHAR(MAX)
    
  • 仅执行SELECT B FROM Table语句单独读取该大值字段。

官方文档相关说明

此问题确实源于旧版ADODB驱动对SQL Server 2005引入的**大值数据类型(VARCHAR(MAX)、NVARCHAR(MAX)、VARBINARY(MAX))**支持不完善:

  • 旧版驱动(如SQL Server ODBC Driver 6.5及更早、SQLOLEDB OLE DB Provider)无法正确识别大值字段的结束位置,读取此类字段后会导致记录集指针偏移错误,进而使后续字段读取返回空值。
  • 微软官方明确建议使用支持大值类型的驱动版本,例如SQL Server Native Client 10.0及以上(对应OLE DB Provider为SQLNCLI10/11等),或更新的ODBC驱动,这类驱动对大值数据类型有完整适配,可彻底解决该问题。

内容的提问来源于stack exchange,提问作者user3597269

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:58:15