Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

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

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 No: 175168 - Son İnceleme: 09/30/2004 15:29:00 - Düzeltme: 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
Geri bildirim