Ошибка драйверов ODBC '80004005' с включенными 32-битными приложениями - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь следовать школьному проекту и настроить IIS точно так, как они рекомендовали, включая разрешение 32-битных приложений. Тем не менее, несмотря на то, что пробовал это на 2 разных компьютерах с нуля, он все равно не работает. Я получаю сообщение об ошибке:

Поставщик Microsoft OLE DB для драйверов ODBC, ошибка '80004005'

[Microsoft] [Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию

/ LEGO STORE / Program.asp, строка 17

Мой код выглядит следующим образом:

<%
        dim con, rs, sql
        Set con = Server.CreateObject("ADODB.Connection")
        Set rs = Server.CreateObject("ADODB.Recordset")

        con.open("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" & Server.MapPath("Lego.accdb"))

        sql = "SELECT * FROM Table1"

        rs.Open sql, con
        %>

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

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

С программой MS Access связаны два типа баз данных: JET (файлы .mdb) и ACE (файлы .accdb). Более новый формат ACE был представлен в 2007 году, задолго до того, как Classic ASP стал считаться «устаревшим», поэтому любой учебник, касающийся Classic ASP и Access, будет предполагать, что вы используете базу данных JET. Драйвер ADODB для JET, который поставляется с версиями Windows с поддержкой IIS, является только 32-разрядным. Драйвер ADODB для ACE не входит в комплект поставки, его необходимо загрузить и установить самостоятельно. Он имеет 64-битную версию, и, насколько я знаю, только имеет 64-битную версию.

Я подозреваю, что самый безболезненный способ добиться того, чего вы хотите достичь, - это открыть Access и сохранить версию вашей базы данных в более старом формате .mdb.

Строки подключения OLEDB обычно предпочтительнее строк ODBC. В вашем случае строка подключения будет:

con.open("Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("Lego.mdb"))

www.connectionstrings.com является хорошим ресурсом (а также очень легко запоминающимся URL).

0 голосов
/ 04 мая 2018

если вы используете IIS 7 или выше, вам также нужно настроить пул приложений, чтобы разрешить 32-битное использование:

  1. Щелкните правой кнопкой мыши пул приложений и выберите «Расширенные настройки…»
    или выберите то же самое на панели действий после выбора
    Пул приложений
  2. Измените «Включить 32-битные приложения» на True и нажмите «ОК»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...