Môže zobrazí chybové hlásenie "Nie je dostatok miesta na disku alebo pamäť" keď vykonáte operáciu na tabuľku programu Access

Preklady článku Preklady článku
ID článku: 286153 - Zobraziť produkty, ktorých sa tento článok týka.
Rozšírené: Vyžaduje expertné kódovanie, interoperability a multiuser zručnosti.

Tento článok sa uplatňuje iba na databázu programu Microsoft Access (.mdb).

Microsoft Access 2000 verziu tohto článku, pozri 209940.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

PRIZNAKY

Keď vykonáte operáciu na tabuľku, môže sa zobraziť nasledujúce chybové hlásenie, ak operácia vytvára veľký počet stránku zámky:
Nie je dostatok miesta na disku alebo pamäť.
Ak spustíte akčný dotaz na veľkej tabuľke, môže sa zobraziť nasledujúce chybové hlásenie:
Nie je dostatok miesta na disku alebo pamäte na vrátenie zmien údajov tohto akčného dotazu je o to, aby.

PRICINA

Stránka zámky požadované pre transakcie prekročiť MaxLocksPerFile hodnota, ktorá sa predvolí na 9500 zámky. V MaxLocksPerFile nastavenia sú uložené v databáze registry systému Windows.

RIESENIE

Dôležité upozornenie Tento oddiel, metóda alebo úloha obsahuje kroky, ktoré vám povedať, ako upraviť databázu registry. Ak databázu Registry upravíte nesprávne, môžu nastať vážne problémy. Preto dávajte pozor a postupujte presne podľa týchto krokov. Na dosiahnutie lepšej ochrany je vhodné pred úpravou databázu Registry zálohovať. To vám umožní obnoviť databázu Registry, ak sa vyskytnú problémy. Ďalšie informácie o zálohovaní a obnovení databázy Registry nájdete v nasledujúcom článku databázy Microsoft Knowledge Base:
322756 Zálohovanie a obnovovanie databázy Registry v systéme Windows
Existuje niekoľko spôsobov, ako obísť tento problém:
  • Regedit.exe je možné použiť na úpravu databázy registry a zmeniťMaxLocksPerFile hodnota natrvalo.
  • Môžete použiť SetOption metóda Databázového nástroja vyskytova objekt zmeniť MaxLocksPerFile hodnota dočasne v kóde.
  • Ak sa chyba vyskytuje po spustení akčný dotaz, môžete Upraviť dotaz a nastavte jej UseTransaction Vlastnosť Nie.

Metóda 1: Meniace MaxLocksPerFile v databáze registry

Použite Editor databázy Registry na zvýšenie MaxLocksPerFile hodnota pod nasledovným kľúčom:
   HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0
				
Všimnite si, že táto metóda zmení nastavenie databázy registry pre všetkých aplikácie, ktoré používajú databáze Microsoft Jet verzia 4.0.

Metóda 2: Pomocou SetOption MaxLocksPerFile dočasne zmeniť

POZNÁMKA: Vzorky kód v tomto článku používa Microsoft Data Access Objekty. Pre tento kód správne spúšťať musí referenčné Microsoft DAO 3.6 Objektová knižnica. Ak chcete tak urobiť, kliknite na Odkazy na Nástroje ponuka v editore jazyka Visual Basic a uistite sa, že Objektová knižnica programu Microsoft DAO 3.6 je začiarknuté políčko.

Spoločnosť Microsoft poskytuje príklady programovacieho kódu len ako názornú ukážku bez ľubovoľnej vyjadrenej alebo implicitnej záruky. Toto zahŕňa, okrem iného, implicitné záruky obchodovateľnosti a vhodnosti pre konkrétny účel. Úroveň odbornosti článku predpokladá, že ovládate predvádzaný programovací jazyk a nástroje, ktoré sa používajú na vytváranie a ladenie procedúr. Pracovníci technickej podpory spoločnosti Microsoft môžu pomôcť vysvetliť funkčnosť konkrétny postup, ale nie modifikuje tieto príklady poskytovať pridanú funkčnosť alebo výstavbe postupy splniť vaše konkrétne požiadavky. V SetOption metóda dočasne prepíše hodnoty pre databázu Microsoft Jet motor kľúče v databáze registry. Nová hodnota zostáva v platnosti, kým nezmeníte to znova, alebo dovtedy, kým Databázového nástroja vyskytova objekt zavretý.

Poznámka: Zmeny MaxLocksPerFile nastavenie pomocou SetOption metóda bude iba k dispozícii prostredníctvom aktuálnej relácie údajov Objekty programu Access (DAO). Dotazy, ktoré sa spúšťajú pomocou používateľského rozhrania programu Microsoft Access bude naďalej používať nastavenia v databáze registry.

Nasledujúci kód sád vzoriek MaxLocksPerFile na 200.000 pred vykonaním aktualizácie fungovania vnútri transakciu:
Sub LargeUpdate()
   On Error GoTo LargeUpdate_Error
   Dim db As DAO.Database, ws As DAO.Workspace

   ' Set MaxLocksPerFile.
   DBEngine.SetOption dbMaxLocksPerFile, 200000

   Set db = CurrentDb
   Set ws = Workspaces(0)

   ' Perform the update.
   ws.BeginTrans
   db.Execute "UPDATE BigTable 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"
   End Sub
				

Metóda 3: Stanovenie vlastnosť UseTransaction v akčný dotaz

Ak uložené akčný dotaz spôsobuje chybu, môžete nastaviť jeho UseTransaction Vlastnosť Nie. Všimnite si, že ak budete robiť, ste nemôže vrátiť späť zmeny Ak tam je problém alebo chyba je spustený dotaz:
  1. Otvorte dotaz v návrhovom zobrazení.
  2. Na View ponuky, kliknite na tlačidlo Vlastnosti.
  3. Kliknite na prázdne miesto v hornej polovici okna dotazu Ak chcete zobraziť Vlastnosti dotazu dialógové okno.
  4. Nastaviť UseTransaction Vlastnosť Nie.
  5. Dotaz uložiť a zavrieť.

DALSIE INFORMACIE

V MaxLocksPerFile nastavenie databázy registry bráni transakcií s Microsoft Jet databázový nástroj z presahuje špecifikovanú hodnotu. Ak transakcia pokúsi vytvoriť zámky v nadbytku MaxLocksPerFile hodnota, transakcia je rozdelená na dve alebo viac častí a čiastočne spáchaný.

Kroky na reprodukovanie tohto problému

Nasledujúci príklad využíva Visual Basic postup na vytvorenie Tabuľka s 10.000 záznamov v nej a potom upraví tabuľky s cieľom spôsobiť chybové hlásenie:
  1. Otvorte ukážkovú databázu Northwind.mdb.
  2. Vytvoriť modul a potom zadajte nasledovný postup:
    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. Chcete spustiť postup, zadajte nasledujúci riadok v Okamžité okno, a potom stlačte kláves ENTER:
    CreateBigTable
    						

    Postup vytvorí tabuľku nazýva BigTable s 10 000 záznamov v ňom.
  4. Uložte modulu ako Module1 a zavrite ho.
  5. Otvorte BigTable tabuľku v návrhovom zobrazení.
  6. Zmena FieldSize Vlastnosť Field4 na 253.
  7. Uložte tabuľku. Kliknite na položku Yes keď sa zobrazí výzva, že niektoré údaje môžu byť stratená. Všimnite si, že, po chvíli sa zobrazí nasledovné chybové hlásenia:
    Microsoft Access nemôžete zmeniť typ údajov.
    Nie je dostatok miesta na disku alebo pamäte.
    Vyskytli sa chyby počas Uložte činnosť. Typy údajov sa nezmenili. Vlastnosti sa neaktualizovali.
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Vlastnosti

ID článku: 286153 - Posledná kontrola: 24. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Kľúčové slová: 
kbprogramming kbdta kberrmsg kbprb kbmt KB286153 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:286153

Odošlite odozvu

 

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