Возникли проблемы с ODBC DSN и 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, целевой ЦП: AllCPU, 32-разрядная машина: работает нормально
Строка подключения DSN, целевой ЦП: AllCPU, 64-разрядная машина: ошибка [IM014]
Строка подключения DSN, целевой ЦП: x86, 32-разрядная машина: работает нормально
Строка подключения DSN, целевой ЦП: x86, 64-разрядная машина: ошибка [HY000]
                                                                   [HYC00]
                                                                   [08S01]
                                                                   [08S01]
                                                                   [08S01]
                                                                   [IM006]
"Да, все эти ошибки на последней из-за одной попытки подключения.

1 ответ

Решение

Смотрите эти ссылки:

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-разрядные драйверы. Если у вас есть office32, то у вас есть 32-битный драйвер. Вторая ссылка показывает обходные пути.

С уважением

Ignacio

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

Другие вопросы по тегам