我们有一个使用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函数,但不确定如何使它适用于我的方案,甚至是必要的。