Как принудительно использовать ODBC-версию 2.x в приложении C#

Odbc-драйвер версии 2.x, но в Visual Studio используется версия 3.x. Нужно каким-то образом заставить приложение использовать версию 2.x Прямо сейчас возникает ошибка: «Драйвер не поддерживает версию поведения ODBC, запрошенную приложением (см. SQLSetEnvAttr)». - но не находит способа указать приложению использовать другую версию

Попытка установить связь с системой Honeywell. Они не известны обменом данными - но есть ODBC-драйвер, написанный кем-то лет 15 назад. При работе на сервере Windows 2003 и компиляции (на том же сервере) в Visual Studio 2005 приложение работает. То же приложение работает на другом сервере: не работает. Приложение скомпилировано (x86) на любой другой машине: Не работает ни на старом сервере, ни на новом.

Не находит свойства или методы в System.Data.Odbc.OdbcConnection, чтобы установить используемую версию ODBC.

На данный момент вы не получаете «ошибку» при запуске приложения: оно подключается к dsn, и пользователь аутентифицируется. (Смена логина или пароля выдает ошибку) - но данные не загружаются.

Выполнение трассировки вызовов драйвера ODBS дает:

DIAG [IM006] [Microsoft] [Диспетчер драйверов ODBC] Сбой SQLSetConnectAttr драйвера (0)

DIAG [01000] [Microsoft][Диспетчер драйверов ODBC] Драйвер не поддерживает версию поведения ODBC, запрошенную приложением (см. SQLSetEnvAttr). (0)

....

DIAG [IM006] [Microsoft] [Диспетчер драйверов ODBC] Сбой SQLSetConnectAttr драйвера (0)

DIAG [HY096] [Honeywell] [Драйвер ODBC] Тип информации вне допустимого диапазона (1043)

....

DIAG [HYC00] [Honeywell] [Драйвер ODBC] Драйвер не поддерживает (1010)

Итак, поскольку нет более нового драйвера для использования, мне нужно, чтобы мое приложение использовало ODBC 2.x, но оно по-прежнему использует ODBC 3.x.


person Martin Klarqvist    schedule 27.03.2019    source источник
comment
Вы можете установить источник данных ODBC в Панели управления: Администрирование: Источник данных ODBC   -  person jdweng    schedule 27.03.2019


Ответы (1)


Когда вы сообщаете VS C# о подключении к источнику данных ODBC, он незаметно подключается к ODBC с помощью поставщика Microsoft ADO.NET для ODBC, который хочет, чтобы все было в актуальном состоянии.

Лучше всего в этой ситуации переключиться на другого поставщика ADO.NET, который понимает, что у вас не всегда может быть новый драйвер ODBC, и сделает все возможное, чтобы преобразовать новые вызовы C# ADO.NET API в более старые вызовы API ODBC. когда необходимо. Мой работодатель предлагает несколько вариантов, одним из которых является Доступ к данным Enterprise Edition для источников данных ODBC, а другой — Virtuoso Universal Server Enterprise Edition (функционирующий как виртуальная СУБД), оба доступны для немедленной загрузки с бесплатной временной лицензией, предоставляемой для тестирования и оценки.

person TallTed    schedule 27.03.2019