Почему не работает MDB на IIS 7 и выше
Начал перенос сайтов с Windows 2003 Server на Windows 2008 R2 Server Standard и обратил внимание, что часть моих сайтов не запускается. Начал копаться в исходниках и обнаружил, что проблема возникает только на сайтах использующих MDB-файлы в качестве базы данных. Долго копался и экспериментировал пока не узнал, что в 64-разрядных системах не было реализовано ODBC-драйвера. Почему так было сделано я не знаю. Может он стал не актуальным или из-за него возникают какие-то проблемы, но факт остаётся фактом. Под 64-разрядными операционными системами не возможно работать с MDB-файлами. Но, что же теперь делать? Не переводить же маленькие сайты на работу со SQL-серверами. У Майкрософта есть бесплатная реализация Microsoft SQL Server, но всё-равно переносимость сайтов, в этом случае, будет ухудшена.
Как заставить работать MDB под IIS 7 и выше? Выход есть, достаточно разрешить использование 32-разрядных приложений в используемом пуле приложений. Чтобы включить поддержку 32-разрядных приложений в IIS 7, необходимо запуститься оснастку управления IIS. В левой колонке выбрать Пулы приложений и в правой колонке отобразится список пулов приложений. В списке приложений нажимаем правой кнопкой мышки на необходимом приложении (оно совпадает с именем сайта к которому подключаем возможность работы с MDB). У вас появится вот такое контекстное меню:
В нём выбираем Дополнительные параметры... и попадаем на такое меню:
Ищем строчку с названием Разрешены 32-рфзрядные приложения и выбираем в ней значение True. После чего нажимаем на кнопочку OK. И наши базы MDB начинают работать на выбранном хосте который обслуживается этим приложением.
На самом деле это приводит к незначительному росту нагрузки на сервер. Если сайтов до полутора тысяч, то эта нагрузка не сильно сказывается, а если количество сайтов превышает пару тысяч, то нужно подумать о том, что лучше переводить сайты с маленьких MDB-файлов, на один большой SQL-Server. Тогда параллельно разгрузится файловая система сервера. Правда, устанавливать MSSQL Server нужно на другом хосте, а не на том где исполняются ваши сайты. В идеале MSSQL-сервер должен быть изолирован от внешней сети и подключаться отдельным кабелем к web-серверу.
Вот и всё, маленькая хитрость для решения большой проблемы.
Тэги: ИТ
Отредактировано:2020-09-25 19:01:53
А конвертировать MDB во что-то к чему есть ODBC? Типа dbf, xls, txt в конце концов)