PRB: ASP возвращает ошибку «В операции должен использоваться обновляемый запрос»

Переводы статьи Переводы статьи
Код статьи: 175168 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Проблема

При совместном использовании ActiveX Data Objects (ADO) и Active Server Pages (ASP) может произойти следующая типичная ошибка:
Служба доступа Microsoft OLE DB для драйверов ODBC ошибка '80004005'
[Microsoft][Драйвер ODBC для Microsoft Access 97] В операции должен использоваться обновляемый запрос.

Причина

В данной статье описаны основные четыре причины возникновения такой ошибки и способы устранения проблемы в каждом из случаев. Хотя данная статья относится к базам данных Microsoft Access, представленные в ней сведения применимы и к другим типам баз данных.

Решение

Такая ошибка обычно возникает при попытке сценария выполнить запрос UPDATE или какое-либо другое действие, изменяющее информацию в базе данных. Такая ошибка возникает, поскольку объекту ADO не удается сделать запись в базе данных по одной из следующих причин.

  1. Наиболее распространенная ошибка состоит в том, что у гостевой учетной записи Интернета (IUSR_MACHINE), являющейся по умолчанию частью группы «Все», не имеется разрешения на запись в файл базы данных (MDB). Для устранения такой ошибки перейдите в проводнике на вкладку «Безопасность» и измените свойства для этого файла, чтобы пользователи гостевой учетной записи Интернета имели требуемые разрешения.

    Примечание. При использовании баз данных Microsoft Access совместно с объектом ADO также необходимо предоставить пользователям гостевой учетной записи Интернета права на запись в папку, содержащую файл MDB. Это связано с тем, что модуль Microsoft Jet создает файл LDB для обработки защиты базы данных. Может потребоваться также предоставить права чтения и записи в папку Temp, поскольку модулем Microsoft Jet могут быть созданы временные файлы в данной папке.
  2. Второй причиной такой ошибки является то, что база данных была открыта в неправильном для записи режиме. При выполнении действия «Открыть» над объектом «Подключение» используется свойство «Режим», показывающее разрешения для данного подключения как показано ниже.
    
          SQL = "UPDATE Products Set UnitPrice = 2;"
          Set Conn = Server.CreateObject("ADODB.Connection")
          Conn.Mode = 3      '3 = adModeReadWrite
          Conn.Open "myDSN"
          Conn.Execute(SQL)
          Conn.Close
    
    						
    Примечание. По умолчанию для параметра MODE задано значение 0 (adModeUnknown), что обычно позволяет вносить обновления.
  3. Еще одной причиной такой ошибки является установленный флажок «Только чтение» на странице «Параметры» для имен источника данных в диспетчере ODBC.
  4. Последняя причина и ее решение относятся к источнику данных SQL. Ошибка могла быть вызвана инструкциями SQL, нарушающими целостность базы данных на уровне ссылок. Ниже представлены несколько наиболее распространенных запросов, вызывающих сбой.
    • Самую простую группу представляют неизменяемые запросы: перекрестные запросы, запросы к серверу SQL, запросы на объединение или на обновление (на создание таблицы), у которых для свойств UniqueValue заданы значения «Да».

    • Другой распространенный случай происходит при объединении связанных таблиц ODBC, не имеющих уникальных индексов. В этом случае нельзя гарантировать, что записи останутся уникальными в таблице, значения полей которой изменяются при запросе.

    • Лишь один случай имеет надежное решение. Если выполняется попытка обновления связанного поля запроса «один-ко-многим» со стороны «один», то, если не включено каскадное обновление, произойдет сбой. При таком способе выполняется делегирование целостности базы данных на уровне ссылок в ядро JET.

Статус

Такое поведение является особенностью данного продукта.

Свойства

Код статьи: 175168 - Последний отзыв: 30 сентября 2004 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Active Server Pages 4.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 5.0
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1
  • Microsoft ActiveX Data Objects 2.1 Service Pack 2
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
Ключевые слова: 
kberrmsg kbdatabase kbprb KB175168

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com