Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

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

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

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

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