ข้อผิดพลาด: ACC97: "มี Isn't พอเนื้อที่ดิสก์หรือหน่วยความจำ"

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 161329 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขั้นสูง: ต้องเขียนโค้ดผู้เชี่ยวชาญ ทำงานร่วมกัน และทักษะ multiuser

ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

สิ่งสำคัญ: บทความนี้ประกอบด้วยข้อมูลเกี่ยวกับการแก้ไขรีจิสทรี ก่อนที่คุณแก้ไขรีจิสทรี คุณควรทำสำเนาสำรองของแฟ้มรีจิสทรี (System.dat และ User.dat) ก่อน แฟ้มที่ซ่อนไว้ในโฟลเดอร์ Windows ทั้งสองได้

เมื่อคุณทำการดำเนินการบนตาราง คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้ถ้าการดำเนินการที่สร้างตัวล็อกหน้าจำนวนมาก:
ไม่เพียงพอพื้นที่ว่างดิสก์หรือหน่วยความจำ
หากคุณรันการสอบถามการดำเนินการบนตารางที่มีขนาดใหญ่ คุณอาจได้รับข้อความแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:
ไม่เพียงพอพื้นที่ว่างดิสก์หรือหน่วยความจำการเลิกทำการเปลี่ยนแปลงข้อมูลการแบบสอบถามการกระทำนี้จะทำ
หมายเหตุ: บางส่วนบทความนี้อนุมานว่า คุณไม่คุ้นเคย กับ Visual Basic สำหรับโปรแกรมประยุกต์ และ มีการสร้างโปรแกรมประยุกต์ของ Microsoft ในการเข้าถึงการใช้เครื่องมือเขียนโปรแกรมที่ให้มากับ Microsoft ในการเข้าถึง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Visual Basic สำหรับโปรแกรมประยุกต์ โปรดอ้างถึงคู่มือ "อาคารโปรแกรมประยุกต์ ด้วย Microsoft Access 97"

สาเหตุ

ล็อกหน้าที่จำเป็นสำหรับธุรกรรมเกิน MaxLocksPerFile ค่า ที่เริ่มต้นที่ล็อก 9500 การตั้งค่า MaxLocksPerFile ถูกจัดเก็บไว้ในรีจิสทรีของ Windows

การแก้ไข

มีหลายวิธีเพื่อหลีกเลี่ยงปัญหานี้:
  • คุณสามารถใช้ Regedit.exe เพื่อแก้ไขรีจิสทรีของ Windows และเปลี่ยนค่า MaxLocksPerFile อย่างถาวร
  • คุณสามารถใช้วิธี SetOption ของวัตถุ DBEngine เพื่อเปลี่ยนค่า MaxLocksPerFile ชั่วคราวในรหัส
  • ถ้าข้อผิดพลาดเกิดขึ้นเมื่อคุณรันการสอบถามการดำเนินการ คุณสามารถปรับเปลี่ยนแบบสอบถาม และการตั้งค่าของคุณสมบัติ UseTransaction ไปที่หมายเลข

วิธีที่ 1: การเปลี่ยนแปลง MaxLocksPerFile ในรีจิสทรีของ Windows

คำเตือน: การใช้ตัวแก้ไขรีจิสทรีอย่างไม่ถูกต้องอาจทำให้เกิดปัญหาร้ายแรงซึ่งอาจทำให้คุณติดตั้ง Windows 95 Microsoft ไม่รับประกันว่า ปัญหาที่เป็นผลจากการใช้ที่ไม่ถูกต้องของ'ตัวแก้ไขรีจิสทรี'สามารถแก้ไข โปรดใช้ Registry Editor โดยยอมรับความเสี่ยงที่อาจเกิดขึ้น

สำหรับข้อมูลเกี่ยวกับวิธีการแก้ไขรีจิสทรี ดูหัวข้อวิธีใช้ออนไลน์ของเปลี่ยนคีย์และค่าใน Registry Editor (Regedit.exe) โปรดสังเกตว่า คุณควรทำสำเนาสำรองของแฟ้มรีจิสทรี (System.dat และ User.dat) ก่อนที่จะแก้ไขรีจิสทรี

ใช้ตัวแก้ไขรีจิสทรีเพื่อเพิ่มค่า MaxLocksPerFile ภายใต้คีย์ต่อไปนี้:
   HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Jet 3.5
				
โปรดสังเกตว่า วิธีนี้เปลี่ยนการตั้งค่ารีจิสทรีของ Windows สำหรับโปรแกรมประยุกต์ทั้งหมดที่ใช้รุ่นโปรแกรมฐานข้อมูลของ Microsoft Jet 3.5

วิธีที่ 2: การใช้ SetOption เพื่อเปลี่ยน MaxLocksPerFile ชั่วคราว

วิธีการ SetOption ชั่วคราวแทนค่าสำหรับโปรแกรมต่าง ๆ ของฐานข้อมูล Microsoft Jet ในรีจิสทรีของ Windows ค่าใหม่จะมีผลจน กว่าคุณเปลี่ยนแปลงดังกล่าวอีกครั้ง หรือจน กระทั่งวัตถุ DBEngine ถูกปิด

หมายเหตุ: การเปลี่ยนแปลงที่เกิดขึ้นกับการตั้งค่า MaxLocksPerFile โดยใช้วิธีการ SetOption เท่านั้นจะพร้อมใช้งานผ่านเซสชันปัจจุบันของ DAO (ข้อมูลการเข้าถึงวัตถุ) แบบสอบถามที่เรียกใช้ผ่านทางอินเทอร์เฟซสำหรับผู้ใช้ของ Microsoft Access จะยังคงใช้การตั้งค่าภายในรีจิสทรี

ตัวอย่างรหัสต่อไปนี้ตั้ง MaxLocksPerFile ไป 200000 ก่อนที่จะดำเนินการการดำเนินการปรับปรุงอยู่ภายในทรานแซคชัน:
   Sub LargeUpdate()
      On Error GoTo LargeUpdate_Error
      Dim db As Database, ws As Workspace

      ' Set MaxLocksPerFile.
      DBEngine.SetOption dbMaxLocksPerFile, 200000

      Set db = CurrentDb
      Set ws = Workspaces(0)

      ' Perform the update.
      ws.BeginTrans
      db.Execute "UPDATE LargeTable SET Field1 = 'Updated Field'", _
         dbFailOnError
      ws.CommitTrans

      db.Close
      MsgBox "Done!"
      Exit Sub

   LargeUpdate_Error:

      MsgBox Err & " " & Error
      ws.Rollback
      MsgBox "Operation Failed - Update Canceled"
      Exit Sub

   End Sub
				

วิธีที่ 3: ตั้งค่าคุณสมบัติ UseTransaction ในแบบสอบถามแบบมีการดำเนินการ

ถ้าแบบสอบถามในการดำเนินการที่จัดเก็บทำให้เกิดข้อผิดพลาด คุณสามารถตั้งค่าคุณสมบัติของ UseTransaction ไปที่หมายเลข โปรดสังเกตว่า ถ้าคุณทำเช่นนี้ คุณจะไม่สามารถย้อนกลับการเปลี่ยนแปลงของคุณถ้ามีปัญหาหรือมีข้อผิดพลาดในขณะที่กำลังดำเนินการแบบสอบถาม:
  1. Open the query in Design view.
  2. On the View menu, click Properties.
  3. Click an empty space in the upper half of the query window to display the Query Properties dialog box.
  4. Set the UseTransaction property to No.
  5. Save the query and close it.

สถานะ

ลักษณะการทำงานนี้เกิดจากการออกแบบ

ข้อมูลเพิ่มเติม

The MaxLocksPerFile setting in the Windows Registry prevents transactions in the Microsoft Jet database engine from exceeding a specified value. If a transaction attempts to create locks in excess of the MaxLocksPerFile value, then the transaction is split into two or more parts and partially committed. This feature was added to Microsoft Access 97 to prevent Netware 3.1 server crashes when the specified Netware lock limit was exceeded, and to improve performance with both Netware and Windows NT.

ขั้นตอนในการทบทวนเกิดลักษณะการทำงาน

The following example uses a Visual Basic procedure to create a table with 10,000 records in it, and then modifies the table in order to cause the error message:
  1. เปิดฐานข้อมูลตัวอย่าง Northwind.mdb
  2. Create a module and type the following procedure.

    หมายเหตุ: ในโค้ดตัวอย่างต่อไปนี้ ขีดข้อล่าง (_) เมื่อสิ้นสุดของบรรทัดมีใช้เป็นอักขระที่มีต่อของบรรทัด Remove the underscore from the end of the line when re-creating this code.
          Sub CreateBigTable()
             Dim db As Database, rs As Recordset
             Dim iCounter As Integer, strChar As String
             Set db = CurrentDb
             db.Execute "CREATE TABLE BigTable (ID LONG, Field1 TEXT(255), _
                Field2 TEXT(255), Field3 TEXT(255), Field4 TEXT(255))", _
                dbFailOnError
             Set rs = db.OpenRecordset("BigTable", dbOpenDynaset)
             iCounter = 0
             strChar = String(255, " ")
             While iCounter <= 10000
                rs.AddNew
                rs!ID = iCounter
                rs!Field1 = strChar
                rs!Field2 = strChar
                rs!Field3 = strChar
                rs!Field4 = strChar
                rs.Update
                iCounter = iCounter + 1
             Wend
             MsgBox "Done!"
          End Sub
    					
  3. To run the procedure, type the following line in the Debug window, and then press ENTER:
    CreateBigTable
    The procedure creates a table called BigTable with 10,000 records in it.
  4. Save the module as Module1 and close it.
  5. Open the BigTable table in Design view.
  6. Change the FieldSize property of Field4 to 253.
  7. Save the table. Click OK when you are prompted that some data may be lost. Note that after a time you receive the following error messages:
    Microsoft Access can't change the data type.
    There isn't enough disk space or memory.

    Errors were encountered during the save operation. Data types were not changed. Properties were not updated.

ข้อมูลอ้างอิง

For more information about the SetOption method, search the Help Index for "SetOption method."

For more information about customizing Windows Registry settings for Microsoft Access 97, search the Help Index for "Registry."

For more information about the UseTransaction property, search the Help Index for "UseTransaction property."

คุณสมบัติ

หมายเลขบทความ (Article ID): 161329 - รีวิวครั้งสุดท้าย: 6 มกราคม 2554 - Revision: 2.0
ใช้กับ
  • Microsoft Access 97 Standard Edition
Keywords: 
kberrmsg kbnetwork kbprb kbprogramming kbmt KB161329 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:161329
การปฏิเสธความรับผิดชอบในเนื้อหาของ KB ที่จะไม่มีการปรับปรุงอีกต่อไป
บทความนี้กล่าวถึงผลิตภัณฑ์ที่ Microsoft ไม่มีการสนับสนุนอีกต่อไป เนื้อหาของบทความจึงมีการนำเสนอ "ตามลักษณะที่เป็น" และจะไม่มีการปรับปรุงข้อมูลอีก

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

 

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