У нас есть приложение VB6, использующее ADO, и нам необходимо обновить драйверы ODBC для SQL Server, чтобы обеспечить совместимость с TLS 1.2.Я могу запросить поле varchar (max), используя оригинальный драйвер {SQL Server}, но любой более новый драйвер ODBC не будет возвращать поля varchar (max) (13, 11, собственный клиент SQL 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)=#####))
где ##### - действительный целочисленный идентификатор для таблицы.
Возвращаемое значение отображается как:
2 à
и имеет тип 200 (adVarChar).
Я в растерянности, и не уверен, почему я не могу заставить новые драйверы ODBC читать поля varchar (max).Я изучил функцию SQLGetData, но не совсем уверен, как заставить ее работать в моем сценарии или даже если это необходимо.