Как использовать 32-разрядный драйвер ODBC на 64-разрядном сервере 2008, когда установщик не создает стандартное уведомление о доставке? - PullRequest
26 голосов
/ 16 июля 2009

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

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

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

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

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

Ответы [ 3 ]

41 голосов
/ 16 июля 2009

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

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

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

2 голосов
/ 17 ноября 2015

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

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

Оказывается, есть два менеджера источника данных ODBC, один для 32-битных и один для 64-битных. Поэтому мне пришлось запустить 32-битную версию, которая находится в C: \ Windows \ SysWOW64 \ odbcad32.exe. Внутри ODBC Data Source Manager я смог перейти на вкладку System DSN и добавить свой драйвер в список с помощью кнопки Добавить. (Вы можете проверить вкладку «Драйверы», чтобы увидеть список драйверов, которые вы можете добавить, если вашего драйвера нет в этом списке, возможно, вам придется установить его).

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

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

2 голосов
/ 30 января 2013

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

...