Как я могу использовать 32-битный драйвер ODBC на 64-битном сервере 2008, когда установщик не создает стандартный DSN?

StackOverflow https://stackoverflow.com/questions/1134827

Вопрос

Я столкнулся с проблемой с некоторым сторонним программным обеспечением, которое мы используем для отслеживания использования лицензии на программное обеспечение в наших компьютерных лабораториях. Недавно мы перенесли приложение на 64-битный сервер 2008 после получения от компании, что оно совместимо и запустило некоторые предварительные тесты, которые показали, что приложение работает в 64-разрядной среде. К сожалению, человек, проведенный тестированием, не проверял функциональность нескольких приложений, которые у меня есть, которые полагаются на доступ к данным, чтобы выполнить как в прямом эфире, так и после обработки данных для получения некоторых отчетов.

Оказывается, в приложении нет 64-битного драйвера ODBC для доступа к своим внутренним данным и не может использовать 64-битный драйвер SQL Server ODBC для экспорта своих данных на SQL Server. Он включает в себя и устанавливает 32-битный драйвер ODBC, но он устанавливает его как источник пользовательских данных, а не источник системных данных, что означает, что моя служба Windows, которая запускает коллекцию в прямом эфире, не может его найти. Я также не могу создать систему DSN, так как консоль администратора данных источников данных не может найти установленного драйвера.

У меня вопрос, как мне настроить источник данных для этого соединения, к которому я могу получить доступ к сервису C#/. Net Windows, работающей в рамках системной учетной записи?

Поскольку я понял способ сделать это, я предоставлю свое решение в качестве ответа (в соответствии с Часто задаваемые вопросы о том, как ответить на свой вопрос).

Похожий на:Какое программное обеспечение существует для преодоления 64-разрядного приложения ODBC с 32-разрядным драйвером ODBC в Windows?

Это было полезно?

Решение

Оказывается, вы можете создать 32-битные соединения ODBC, используя C:\Windows\SysWOW64\odbcad32.exe. Анкет Моим решением было создание 32-битного соединения ODBC в качестве системы DSN. Это все еще не позволило мне подключиться к нему, так как .NET не смог его посмотреть. После значительного и бесплодного поиска, чтобы найти, как получить класс ODBCConnection, чтобы найти DSN в нужное место, Я наткнулся на веб -сайт, который предложил изменить реестр для решения другой проблемы.

Я закончил тем, что создал соединение ODBC непосредственно под HKLM\Software\ODBC. Анкет Я посмотрел в ключ Syswow6432, чтобы найти параметры, которые были установлены с использованием 32-разрядной версии инструмента администрирования ODBC, и воссоздал это в стандартном месте. Однако я не добавил запись для драйвера, так как это не было установлено стандартным установщиком для приложения.

После создания записи (вручную) я запустил свой сервис Windows, и все было счастлива.

Другие советы

Откройте IIS Manager, выберите Pools Application, выберите используемый Pool, который вы используете, нажмите на расширенные настройки в правом меню. В общем, установите «Включить 32-разрядные приложения» в «Истину».

Многие из этих ответов довольно старые, поэтому я подумал, что обновлю решение, которое, я думаю, полезно.

Наша проблема была аналогична OP, мы обновили 32 -битные машины XP до 64 -битных Windows 7 и наше прикладное программное обеспечение, которое использует 32 -битный драйвер ODBC, который остановил, чтобы писать в нашу базу данных.

Оказывается, есть два менеджера источников данных ODBC, один на 32 бит и один на 64 бит. Поэтому мне пришлось запустить 32 -битную версию, которая находится в C: Windows Syswow64 ODBCAD32.exe. Внутри диспетчера источников данных ODBC я смог перейти на вкладку DSN System и добавить свой драйвер в список, используя кнопку добавления. (Вы можете проверить вкладку драйверов, чтобы увидеть список драйверов, которые вы можете добавить, если ваш драйвер не в этом списке, вам может потребоваться его установить).

Следующей проблемой было то, что программное обеспечение, которое мы запустили, было собрано для использования «любого процессора». Это увидит, что операционная система составила 64 бит, поэтому она будет смотреть на 64 -битные источники данных ODBC. Поэтому мне пришлось заставить программу компилировать как программу x86, которая затем говорит ей взглянуть на 32 -битные источники данных ODBC. Чтобы установить свою программу на x86, в Visual Studio перейдите к свойствам проекта, и под вкладкой Build вверху есть раскрывающийся список платформы, и выберите x86. Если у вас нет исходного кода, и вы не можете составить программу как x86, вы сможете щелкнуть правой кнопкой мыши .exe .exe и перейти на вкладку совместимости и выбрать совместимость, которая работает для вас.

После того, как я добавили драйверы, и программа, указывающая на нужных водителей, все работало так, как и раньше. Надеемся, что это поможет любому, кто работает с более старым программным обеспечением.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top