Как заставить использование ODBC-версии 2.x в приложении C # - PullRequest
1 голос
/ 27 марта 2019

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 Driver] Тип информации вне диапазона (1043)

....

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

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

1 Ответ

0 голосов
/ 27 марта 2019

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

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

...