Невозможно получить поля varchar (max) с помощью VB6 ADO на SQL Server с драйверами ODBC 13 - PullRequest
0 голосов
/ 20 ноября 2018

У нас есть приложение 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, но не совсем уверен, как заставить ее работать в моем сценарии или даже если это необходимо.

...