首页 > 解决方案 > 无法在带有 ODBC 13 驱动程序的 SQL Server 上使用 VB6 ADO 检索 varchar(max) 字段

问题描述

我们有一个使用 ADO 的 VB6 应用程序,需要更新 SQL Server ODBC 驱动程序以处理 TLS 1.2 合规性。我可以使用原始 {SQL Server} 驱动程序查询 varchar(max) 字段,但任何较新的 ODBC 驱动程序都不会返回 varchar(max) 字段(13、11、SQL Native Client 11、10 等)。除 varchar(max) 外,所有其他字段字段类型都可以在较新的驱动程序中正常返回。

我将我的数据库连接字符串设置如下:

PROVIDER=MSDASQL;Driver={ODBC Driver 13 for SQL Server};Server=server;DATABASE=dbname;UID=user;PWD=password;DataTypeCompatibility=80;MARS Connection=True;

然后使用以下命令执行 ADO 记录集:

Set recordset1 = gsSQLConn.Execute(strSQL, recordsaffected, adCmdText)

SQL 是

SELECT TABLE.NOTES AS [Value] From TABLE WHERE (((TABLE.NOTES) Is Not Null) AND ((TABLE.TABLE_ID)=#####))

其中##### 是表的有效整数 ID。

返回值显示为:

        2                                                      à                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              

并且是类型 200 (adVarChar)。

我对此感到茫然,不知道为什么我不能让更新的 ODBC 驱动程序读取 varchar(max) 字段。我确实研究了 SQLGetData 函数,但不太确定如何让它适用于我的场景,或者即使它是必要的。

标签: sql-servervb6odbcado

解决方案


推荐阅读