SORUN: ASP 'İşlem Güncelleştirilebilen Bir Sorgu Olmalı' Hatası Döndürüyor

Makale çevirileri Makale çevirileri
Makale numarası: 175168 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Belirtiler

Active Server Pages (ASP) ile ActiveX Data Objects (ADO) kullandığınızda aşağıdaki genel hatalardan biriyle karşılaşabilirsiniz:
ODBC Sürücüler için Microsoft OLE DB Sağlayıcı hatası '80004005'
[Microsoft][ODBC Microsoft Access 97 Sürücüsü] İşlem, güncelleştirilebilen bir sorgu kullanmalı.

Neden

Bu makalede, bu hataya neden olan dört ana sorun ve kullanılabilen geçici çözümler anlatılmaktadır. Bu makalede Microsoft Access veritabanlarına başvurular olsa da, burada sağlanan bilgiler diğer veritabanı türleri için de geçerlidir.

€”zm

Bu hata, tipik olarak komut dosyanız bir UPDATE (güncelleştirme) veya veritabanındaki bilgileri değiştiren başka bir işlem yapmaya çalıştığında oluşur. Bu hata, ADO aşağıdaki nedenlerden biriyle veritabanına yazamadığı için oluşur:

  1. En genel neden, varsayılan olarak "Everyone" grubunun bir parçası olan Internet Guest hesabının (IUSR_MACHINE) veritabanı dosyasına (.mdb) Yazma izinleri olmamasıdır. Bu sorunu gidermek için, Explorer'da Güvenlik sekmesini kullanarak Internet Guest hesabının izinleri doğru olacak biçimde bu dosyanın özelliklerini ayarlayın.

    NOT: Microsoft Access veritabanlarını ADO ile kullanırken, Internet Guest hesabına .mdb dosyasını içeren dizinde Yazma izinleri atanması gerekir. Bunun nedeni, Jet'in veritabanı kilitlemesini işlemek için bir .ldb dosyası oluşturmasıdır. "Temp" klasörüne de okuma/yazma izinleri atamanız gerekebilir, çünkü Jet bu dizinde geçici dosyalar oluşturabilir.
  2. Bu hatanın ikinci bir nedeni de veritabanının yazma işlemi için doğru MODE ile açılmamış olmasıdır. Connection nesnesinde Open işlemi gerçekleştirirseniz, bağlantı izinlerini belirtmek amacıyla Mode özelliğini aşağıda gösterildiği gibi kullanmalısınız:
    
          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
    
    						
    NOT: Varsayılan olarak, MODE genellikle güncelleştirmelere izin veren 0 (adModeUnknown) değerine ayarlanır.
  3. Bu hatanın bir başka nedeni de ODBC Yöneticisi'nde bu DSN için Seçenekler sayfasında "Salt Okunur" ayarının işaretlenmiş olmasıdır.
  4. Son neden ve önerilen geçici çözümü tüm SQL veri kaynakları için geçerlidir. Veritabanının başvurusal bütünlüğünü yok sayan tüm SQL ifadeleri bu hataya neden olabilir. Başarısız olan başlıca sorgular şunlardır:
    • Çalışılabilecek en basit grup, değiştiremediğiniz gruplardır: UniqueValue özellikleri Yes olarak ayarlanmış çapraz sorgu, SQL doğrudan sorgusu, birleşim veya güncelleştirme (ya da tablo oluşturma) işlem sorguları.

    • Sık karşılaşılan bir başka neden de birleştirme işleminin benzersiz dizinleri olmayan bağlantılı ODCB tabloları içermesidir. Bu durumda, değerleri sorgu ile değişecek alanlar içeren bir tablodaki kayıtların benzersiz olmasını SQL'in garanti etmesi söz konusu değildir.

    • Bir neden, güçlü bir çözüm içermektedir. "Bir-çok" sorgunun "bir" tarafındaki birleştirme alanını güncelleştirmeye çalıştığınızda, basamaklı güncelleştirmeleri açmadığınız sürece sorgu başarısız olur. Böylece, JET alt yapısına başvurusal bütünlük atarsınız.

Durum

Bu davranış, tasarımdan kaynaklanmaktadır.

Özellikler

Makale numarası: 175168 - Last Review: 30 Eylül 2004 Perşembe - Gözden geçirme: 4.0
Bu makaledeki bilginin uygulandigi durum:
  • 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
Anahtar Kelimeler: 
kberrmsg kbdatabase kbprb KB175168

Geri Bildirim Ver

 

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