ASP kembali kesalahan "Operasi harus menggunakan query updateable"

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 175168 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

GEJALA

Anda mungkin mengalami kesalahan umum berikut bila Anda menggunakan objek Data ActiveX (ADO) dengan Active Server Pages (ASP):
Microsoft OLE penyedia DB ODBC driver error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Operasi harus menggunakan updateable permintaan.

PENYEBAB

Artikel ini menjelaskan penyebab utama empat kesalahan ini dan penanganannya sesuai. Meskipun artikel ini merujuk kepada Microsoft Access database, informasi yang diberikan di sini juga berlaku untuk jenis database.

PEMECAHAN MASALAH

Ini biasanya kesalahan ketika skrip Anda mencoba untuk melakukan PEMBARUAN atau beberapa tindakan lain yang mengubah informasi dalam database. Galat ini terjadi karena ADO tidak dapat menulis ke database untuk salah satu alasan berikut:

  1. Alasan paling umum adalah bahwa account Internet tamu (IUSR_MACHINE), yang oleh default bagian dari "setiap orang" kelompok, tidak mempunyai izin menulis pada file database (.mdb). Untuk mengatasi masalah ini, gunakan tab keamanan di Explorer untuk menyesuaikan properti untuk file ini sehingga account Internet tamu yang benar izin.

    CATATAN: Bila menggunakan Microsoft Access database dengan ADO, juga diperlukan untuk memberikan account Tamu Internet izin menulis pada direktori yang berisi .mdb file. Hal ini karena Jet menciptakan berkas .ldb untuk menangani database penguncian. Anda mungkin juga perlu untuk memberikan izin baca/tulis pada folder "Temp" karena Jet dapat membuat berkas sementara dalam direktori ini.
  2. Kedua penyebab dari galat ini adalah bahwa database tidak dibuka dengan MODE yang benar untuk menulis. Jika Anda melakukan terbuka pada sambungan objek, Anda menggunakan modus properti untuk menunjukkan hak akses pada koneksi seperti yang ditunjukkan di sini:
    
          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
    
    						
    CATATAN: Secara default, MODUS diatur ke 0(adModeUnknown), yang umumnya memungkinkan pembaruan.
  3. Lain penyebab dari galat ini adalah bahwa "Baca saja" pengaturan mungkin Check in halaman pilihan untuk ini DSN di ODBC Manager.
  4. Isu terakhir dan bekerja di sekitar berkenaan dengan sumber data SQL. Kesalahan dapat disebabkan oleh pernyataan SQL yang melanggar referensial integritas database. Berikut adalah beberapa pertanyaan paling umum yang gagal:
    • Kelompok-kelompok yang paling sederhana untuk menangani adalah orang-orang yang Anda tidak dapat mengubah: crosstab, SQL pass-through, Uni, atau pembaruan (atau membuat-tabel) tindakan kueri yang memiliki properti UniqueValue diatur ke ya.

    • Penyebab sangat umum lainnya adalah ketika bergabung termasuk terkait ODBC tabel tidak memiliki indeks unik. Dalam kasus ini, ada cara untuk SQL untuk menjamin bahwa catatan unik dalam tabel yang memiliki kolom yang nilai akan berubah dengan query.

    • Satu penyebab memiliki solusi yang kuat. Jika Anda mencoba untuk memperbarui join lapangan di sisi "satu" permintaan "satu-ke-banyak" akan gagal kecuali Anda menghidupkan cascading update. Dengan cara ini, Anda mendelegasikan referensial integritas untuk mesin JET.

STATUS

Perilaku ini sesuai rancangannya.

Properti

ID Artikel: 175168 - Kajian Terakhir: 16 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Active Server Pages 4.0
  • Microsoft Internet Information Services 5.0
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
Kata kunci: 
kbdatabase kberrmsg kbprb kbmt KB175168 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:175168

Berikan Masukan

 

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