ASP ส่งกลับข้อผิดพลาด "การดำเนินการต้องใช้แบบสอบถามที่ทำได้"

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 175168 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

อาการ

คุณอาจพบข้อผิดพลาดทั่วไปดังต่อไปนี้เมื่อคุณใช้วัตถุข้อมูล ActiveX (ADO) กับ Active Server Pages (ASP):
Microsoft บริการ OLE DB สำหรับข้อผิดพลาดของโปรแกรมควบคุม ODBC '80004005'
[Microsoft][ODBC Microsoft Access 97 โปรแกรมควบคุม] ต้องใช้การดำเนินการ แบบสอบถามที่ทำ

สาเหตุ

บทความนี้อธิบายถึงสาเหตุหลักที่สี่ของข้อผิดพลาดนี้และการแก้ปัญหาต่าง ๆ ที่สอดคล้องกัน แม้ว่าบทความนี้อ้างอิงไปยังฐานข้อมูล Microsoft Access ยังมีข้อมูลนี้ไปใช้กับฐานข้อมูลชนิดอื่น ๆ

การแก้ไข

ข้อผิดพลาดนี้มักเกิดเมื่อสคริปต์ของคุณพยายามที่จะดำเนินการ ปรับปรุงหรือการกระทำบางอย่างอื่นซึ่งเปลี่ยนแปลงข้อมูลในฐานข้อมูล ข้อผิดพลาดนี้เกิดขึ้นเนื่องจากไม่สามารถเขียนไปยังฐานข้อมูลหนึ่งของ ADO ด้วยเหตุผลดังต่อไปนี้:

  1. สาเหตุที่พบบ่อยที่สุดคือบัญชี Guest อินเทอร์เน็ต (IUSR_MACHINE), ซึ่งก็คือ โดยค่าเริ่มต้นส่วนของ "" กลุ่ม Everyone ไม่มีสิทธิ์ในการเขียนแฟ้มฐานข้อมูล (.mdb) เมื่อต้องการแก้ไขปัญหานี้ ใช้แท็บ'ความปลอดภัย'ใน Explorer เพื่อปรับเปลี่ยนคุณสมบัติของแฟ้มนี้เพื่อให้บัญชี Guest ของอินเทอร์เน็ตได้ถูกต้อง สิทธิ์

    หมายเหตุ: เมื่อมีการใช้ฐานข้อมูล Microsoft Access ใช้ ADO เป็นจำเป็นให้แก่บัญชี Internet Guest สิทธิ์การเขียนในไดเรกทอรีที่ประกอบด้วยแฟ้ม.mdb ที่เป็นเช่นนี้เนื่องจาก Jet สร้างแฟ้ม.ldb เพื่อจัดการการล็อกฐานข้อมูล นอกจากนี้คุณยังอาจจำเป็นต้องให้สิทธิ์ในการอ่าน/เขียนบนโฟลเดอร์ "Temp" เนื่องจาก 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
    
    						
    หมายเหตุ: โดยค่าเริ่มต้น โหมดถูกตั้งค่าเป็น 0(adModeUnknown) ซึ่งโดยทั่วไปจะช่วยให้การปรับปรุง
  3. เป็นอีกสาเหตุของข้อผิดพลาดนี้อาจจะตั้งค่า "อ่านอย่างเดียว" ตรวจสอบในหน้าตัวเลือกสำหรับ DSN นี้ในโปรแกรมจัดการ ODBC
  4. ปัญหาล่าสุดและวิธีแก้ไขปัญหาเกี่ยวข้องกับทุกแหล่งข้อมูลของ SQL ข้อผิดพลาดอาจมีสาเหตุจากคำสั่ง SQL ที่ละเมิด referential integrity ของ ฐานข้อมูล นี่คือสองสามของแบบสอบถามที่พบบ่อยที่สุดที่ล้มเหลว:
    • มีกลุ่มที่ง่ายที่สุดในการจัดการกับรายการที่คุณไม่สามารถเปลี่ยนแปลง: แท็บไขว้ แบบสอบถาม SQL แบบพาส-ทรู ร่วม หรือปรับปรุง (หรือสร้างตาราง) กระทำที่ มีคุณสมบัติ UniqueValue ที่ตั้งค่าเป็น Yes

    • อีกมากสาเหตุคือเมื่อเข้าร่วมประกอบด้วยตาราง ODBC ที่เชื่อมโยง ที่ไม่มีดัชนีที่ไม่ซ้ำกัน ในกรณีนี้ ไม่มีทางสำหรับ SQL เพื่อรับประกันว่า ระเบียนไม่ซ้ำกันในตารางที่มีเขตข้อมูลที่ ค่าจะมีการเปลี่ยนแปลงกับแบบสอบถาม

    • สาเหตุหนึ่งมีวิธีการแก้ปัญหาที่สมบูรณ์ ถ้าคุณพยายามที่จะปรับปรุงการรวม เขตข้อมูลบนด้าน "หนึ่ง" ของแบบสอบถาม "หนึ่ง-ต่อกลุ่ม" ที่จะล้มเหลวเว้นแต่ คุณเปิดการปรับปรุงที่มีการเรียงซ้อน ผู้รับมอบด้วยวิธีนี้ คุณสิทธิ์ referential ความสอดคล้องของการโปรแกรม JET

สถานะ

ลักษณะการทำงานนี้ได้ ด้วยการออกแบบ

คุณสมบัติ

หมายเลขบทความ (Article ID): 175168 - รีวิวครั้งสุดท้าย: 28 มกราคม 2554 - Revision: 5.0
ใช้กับ
  • 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
Keywords: 
kbdatabase kberrmsg kbprb kbmt KB175168 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:175168

ให้ข้อเสนอแนะ

 

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