Возникли проблемы с DSN ODBC и 32-разрядной и 64-разрядной версиями

Я пишу приложение для взаимодействия с базой данных Progress в VB.net. Моя машина для разработки - это 32-битный компьютер с Win 7. У меня есть системный DSN, настроенный для базы данных, которую мне нужно использовать. Поскольку это на 32-битной машине, это 32-битный DSN.

Приложение отлично работает на моем локальном компьютере, проблема возникает, когда я пытаюсь перенести его на одну из наших 64-битных машин. Теперь на 64-битных машинах, похоже, установлен 32-битный драйвер (я открыл C:\Windows\SysWow64\odbcad32.exe, который, на основе исследований, должен показывать все мои 32-битные системные DSN и все пользовательские DSN) и, по-видимому, такой же DSN (названный так же, и все ) существует в системных DSN.

Я пытался скомпилировать для x86 вместо AllCPUs, но все равно получаю ошибки. Некоторые ошибки приведены ниже.

Любые предложения о том, как это исправить, чтобы он работал как на 64-битных, так и на 32-битных машинах? Есть ли способ дважды убедиться, что 64-битные машины работают на 32-битных DSN?

Насколько я понимаю, ошибка [IM014] заключается в том, что программа находит DSN на 64-битной машине, но не может его использовать, потому что это 32-битный DSN.

Большинство ошибок для второй ошибки находятся здесь Все коды 08S01 — это «сбои канала связи», IM006 — «сбой SQLSetConnectOption драйвера», и, по-видимому, HY000 имеет около 20 различных значений.

DSN Connection String, Target CPU: AllCPUs, 32 Bit Machine : Runs Fine
DSN Connection String, Target CPU: AllCPUs, 64 Bit Machine : Error [IM014]
DSN Connection String, Target CPU: x86    , 32 Bit Machine : Runs Fine
DSN Connection String, Target CPU: x86    , 64 Bit Machine : Error [HY000]
                                                                   [HYC00]
                                                                   [08S01]
                                                                   [08S01]
                                                                   [08S01]
                                                                   [IM006]
'Yes all of those errors on the last one are from one connection attempt.


person PsychoData    schedule 25.03.2014    source источник
comment
Вы смотрели эти коды ошибок? Тот факт, что вы получаете разные коды в 64-разрядной системе в зависимости от того, является ли приложение 32-разрядным или 64-разрядным, предполагает, что реальная проблема может быть другой.   -  person jmcilhinney    schedule 26.03.2014
comment
Да, я посмотрел ошибки. и что это может предложить тогда? Моя строка подключения не может быть намного проще. DSN=blackring;uid=demo;pwd=demo все порты и прочее настроено в DSN, и когда я нажимаю "Проверить соединение", они работают нормально.   -  person PsychoData    schedule 26.03.2014
comment
Это также касается DSN и использования DSN в строках подключения. Если вы считаете всех поставщиков баз данных сторонним продуктом, то oracle, Mssql, mysql, PostGres и все остальные тоже будут не в тему.   -  person PsychoData    schedule 26.03.2014
comment
Если это поможет, даже прямой доступ через драйверы вместо DSN работает на 32-битной машине разработчика, но не на 64-битных машинах.   -  person PsychoData    schedule 26.03.2014
comment
@HansPassant после некоторого поиска снова нашел тег прогресса. и я предполагаю, что ваш комментарий с точным текстом закрытого голосования является уместным   -  person PsychoData    schedule 26.03.2014
comment
Это может быть далеко, но загрузили ли вы последние 64-битные драйверы для своей базы данных? Вы пытаетесь использовать 32-битные драйверы на 64-битной машине?   -  person Adam Zuckerman    schedule 26.03.2014
comment
Вы проверили базу знаний Progress? Кажется, есть несколько совпадающих записей. Например, этот: knowledgebase.progress.com/articles /Статья/   -  person Jensd    schedule 26.03.2014
comment
@Jensd Я проверил это. DSN на 64-битных машинах — это 32-битный DSN. 32-битный DSN 32-битный исполняемый файл. Я не знаю о драйверах (установленных несколько лет назад, до того, как я был здесь), но 32-битное тестовое соединение DSN в диспетчере источников данных ODBC (32-битная версия в Syswow64) проверяет соединение как нормальное.   -  person PsychoData    schedule 26.03.2014


Ответы (2)


См. эти ссылки:

https://www.simple-talk.com/sql/database-administration/getting-data-between-excel-and-sql-server-using-odbc--/

http://social.msdn.microsoft.com/Forums/en-US/abf34eea-1029-429a-b88e-4671bffcee76/why-cant-32-and-64-bit-access-database-engine-aceoledb-dataproviders-coexist

Microsoft разрешает использование 32- или 64-разрядных драйверов. Если у вас есть офис 32, то у вас есть 32-битный драйвер. Вторая ссылка показывает обходной путь.

С Уважением

Игнасио

person Ignacio    schedule 22.04.2014

Я исправил эту проблему, скомпилировав свой код vb.net в Target CPU = x64 в опции Compile в Visual Studio 2019. Теперь работает отлично.

person Stéphane CERRINI    schedule 25.09.2020