Řešení problémů a oprava poškozené databáze aplikace Access 2002 a novější

Překlady článku Překlady článku
ID článku: 283849 - Produkty, které se vztahují k tomuto článku.
Začátečníci: Je nutná znalost uživatelského rozhraní v počítačích pro jednoho uživatele.

Tento článek se vztahuje pouze na databáze aplikace Microsoft Access (MDB).

Verzi tohoto článku pro aplikaci Microsoft Access 97 naleznete pod číslem 279334 (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).).
Verzi tohoto článku pro aplikaci Microsoft Access 2000 naleznete pod číslem 209137 (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).).
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

V aplikaci Access i mimo ni může dojít k několika událostem, které mohou způsobit poškození souboru databáze. Příznaky poškozené databáze mohou být různé, například se v určitých záznamech zobrazí položka #Odstraněno, nelze otevřít některý z objektů v databázi, nebo soubor databáze v aplikaci Access vůbec nelze otevřít. Užitečnou pomůckou, když se snažíte optimalizovat nebo opravit soubory databáze aplikace Microsoft Access, je nástroj Zkomprimovat a opravit v aplikaci Microsoft Access. Tento článek popisuje tento nástroj aplikace Access a navrhuje další možnosti, jak se pokusit opravit poškozené databáze. Tento článek také vysvětluje, co může být příčinou poškození databází.

Poznámka: Databázový stroj Microsoft Jet, který se používá v aplikaci Microsoft Access, je databázový systém sdílející soubory. Je-li databázový stroj Microsoft Jet používán ve víceuživatelském prostředí, využívá několik klientských procesů operace čtení, zápis a uzamčení souboru ve sdílené databázi. Jelikož databázi čte a zapisuje do ní několik klientských procesů a jelikož stroj Jet nepoužívá protokol transakcí (na rozdíl od pokročilejších databázových systémů, jako je například SQL Server), nelze zcela spolehlivě zabránit poškození databáze. Potřebujete-li, aby databázový systém fungoval 24 hodin denně, sedm dní v týdnu ve víceuživatelském prostředí, společnost Microsoft doporučuje použít opravdový databázový systém typu klient-server podporující trvalé transakce, jako například Microsoft SQL Server.

Další informace

Ačkoli je zotavení poškozených souborů databází pomocí postupů popsaných v tomto článku obvykle úspěšné, společnost Microsoft doporučuje, abyste svá data chránili co nejčastějším pořizováním záložní kopie databázového souboru.

Popis nástroje Zkomprimovat a opravit

Komprese databáze

Při kompresi databáze dojde k opětovnému získání místa v databázi, které bylo uvolněno odstraněním objektů a záznamů. Princip je takový, že proces komprese vytvoří novou cílovou databázi a zkopíruje všechny objekty ze staré databáze do nové. Rozhodnete-li se zkomprimovat databázi pod původním názvem databáze místo do nové databáze, vytvoří proces komprese dočasnou databázi, exportuje do ní všechny objekty z původní databáze, odebere původní databázi a potom přejmenuje dočasnou databázi názvem původní databáze.

Toto je seznam akcí, které proces komprese provádí:
  • Přeuspořádá stránky tabulky tak, aby byly umístěné na sousedních stránkách databáze. Zlepší se tím výkon, protože tabulka pak není fragmentovaná po celé databázi.
  • Získá zpět místo v databázi, které bylo uvolněno odstraněním objektů a záznamů. Dojde-li k odstranění objektů či záznamů z databáze, je místo, které zabíraly, označeno jako volné pro další přídavky do databáze. Velikost databáze se však nezmenší, nedojde-li k její kompresi. Databáze, kde často dochází k přidávání, odebírání nebo aktualizaci záznamů, doporučujeme často komprimovat.
  • Vynuluje zvyšování hodnoty v polích Automatické číslo tak, aby další přiřazená hodnota byla o jedna větší než nejvyšší hodnota u zbývajících záznamů. Došlo-li například k odstranění všech záznamů databáze a byla provedena její komprese, po přidání položky bude v poli Automatické číslo hodnota 1. Je-li nejvyšší zbývající hodnota Automatického čísla v databázi 50 a je provedena komprese databáze, při přidání dalšího záznamu bude v poli Automatické číslo hodnota 51. Platí to i tehdy, pokud byly dříve přidány záznamy s hodnotami vyššími než 50, ale před kompresí byly odstraněny.
  • Generuje tabulkové statistiky, které se používají v procesu optimalizace dotazování. Časem mohou tyto statistiky zastarat. Obvykle k tomu dochází při vrácení transakcí zpět nebo při nesprávném ukončení databáze vlivem neočekávaného přerušení napájení nebo proto, že dojde k vypnutí počítače dříve, než se mohl program používající stroj Microsoft Jet zcela ukončit.
  • Označí příznaky všechny dotazy, takže budou překompilovány při dalším spuštění dotazu. To je důležité, protože statistiky databáze se mohou měnit a dříve kompilovaný dotaz může mít nepřesný plán dotazu.
Oprava databáze

Opravný proces se pokusí opravit pouze tabulky, dotazy a indexy databáze. Nepokouší se opravit poškozené formuláře, zprávy, makra ani moduly.

Co zkontrolovat před spuštěním nástroje Zkomprimovat a opravit

Před spuštěním nástroje Zkomprimovat a opravit je třeba zkontrolovat následující:
  • Zkontrolujte, zda je k dispozici dostatek volného místa na pevném disku k uložení původní i zkomprimované verze databáze aplikace Access. To znamená, že na dané jednotce je třeba mít dostatek volného místa pro uložení nejméně dvojnásobku velikosti databáze aplikace Access. Je-li třeba uvolnit nějaké místo, odstraňte nepotřebné soubory z disku nebo (je-li to možné) přesuňte databázi Access na jednotku, kde je více volného místa.
  • Zkontrolujte, zda máte pro databázi aplikace Access oprávnění Otevřít či spustit i oprávnění Výhradní přístup. Jste-li vlastníkem databáze, zkontrolujte, zda jsou tato oprávnění nastavená. Jestliže databázi nevlastníte, spojte se s jejím vlastníkem a zjistěte, zda můžete získat tato oprávnění.
  • Zkontrolujte, zda nikdo z uživatelů nemá databázi otevřenou.
  • Zkontrolujte, zda není databáze aplikace Access umístěná v síťové sdílené položce určené pouze pro čtení nebo zda není nastavený atribut souboru Jen pro čtení.

Postup pokusu o opravu poškozené databáze

Následující postup je osnovou obecné metody, kterou lze použít k pokusu o opravu poškozené databáze:
  1. Vytvořte kopii souboru poškozené databáze (MDB), abyste měli zálohu.
  2. Je-li přítomen soubor LDB, odstraňte jej. Před odstraněním souboru LDB je třeba zavřít příslušný soubor MDB.

    Soubor LDB slouží k určování toho, které záznamy jsou ve sdílené databázi uzamčené a kým. Je-li otevřena databáze pro sdílené použití, je vytvořen soubor LDB se stejným názvem jako příslušná databáze (MDB). Otevřete-li například vzorovou databázi Northwind.mdb pro sdílené použití ve složce C:\Msoffice\Access, bude ve stejné složce automaticky vytvořen soubor s názvem Northwind.ldb. Soubor LDB je automaticky odstraněn poté, co poslední uživatel zavře databázi, s následujícími dvěma výjimkami – když poslední uživatel nemá oprávnění k odstranění pro složku obsahující soubor MDB nebo když je databáze poškozená. Soubor LDB obsahuje seznam uživatelů, kteří mají databázi otevřenou.
  3. Spusťte nástroj Zkomprimovat a opravit. Postupujte následujícím způsobem:
    1. Je-li databáze otevřená, zavřete ji.
    2. V nabídce Nástroje přejděte na příkaz Správa databáze a potom klepněte na příkaz Zkomprimovat a opravit databázi.
    3. V dialogovém okně Zdrojová databáze pro komprimaci vyberte soubor, který chcete zkomprimovat, a potom klepněte na tlačítko Komprimovat.
    4. V dialogovém okně Komprimovat databázi do zadejte název nového souboru a poté klepněte na tlačítko Uložit.

      Neproběhne-li komprimace a oprava úspěšně, zobrazí se zpráva. Znamená to, že poškození je tak závažné, že jej nelze opravit.
  4. Nepodaří-li se obnovit poškozenou databázi předchozím postupem, pokuste se vytvořit novou databázi a postupně do ní importovat objekty ze staré databáze. Potom znovu vytvořte relace. Tato technika řeší problémy způsobené poškozením systémových tabulek v databázi.

    Poznámka: Pomocí Průvodce Importem nelze importovat datové stránky. Místo toho otevřete stávající datovou stránku v nové databázi. Postupujte následujícím způsobem:
    1. V okně Databáze klepněte na tlačítko Stránky ve skupinovém rámečku Objekty.
    2. Klepněte na tlačítko Nový.
    3. V dialogovém okně Nová datová stránka klepněte na položku Existující webová stránka a potom klepněte na tlačítko OK.
    4. V okně Najít webovou stránku přejděte do umístění požadované datové stránky.
  5. Je-li poškození v tabulce a tabulku se nepodařilo opravit předchozím postupem, zkuste následující:
    1. V aplikaci Microsoft Access exportujte tabulku do souboru ve formátu ASCII (text s oddělovači). Další informace naleznete v nápovědě aplikace Microsoft Access v tématu Export dat nebo databázových objektů.
    2. Odstraňte všechny relace související s touto tabulkou a potom odstraňte tabulku z databáze.
    3. Zkomprimujte databázi.
    4. Znovu vytvořte tabulku a relace, které měla.
    5. Pomocí textového procesoru zkontrolujte soubor ve formátu ASCII, zda neobsahuje vadná nebo neobvyklá data, a případně takové záznamy odeberte. Uložte soubor ve formátu textového souboru ASCII.
    6. Znovu naimportujte soubor ve formátu ASCII do nově vytvořené tabulky. Chcete-li získat další informace o tomto tématu, vyhledejte v rejstříku nápovědy aplikace Microsoft Access slovní spojení „Import objektů“ a potom zobrazte téma Import nebo propojení dat a objektů.
    7. Zadejte znovu všechny záznamy, které bylo třeba odstranit.
  6. Je-li poškození ve formuláři nebo sestavě, pak může být buď v samotném formuláři či sestavě, nebo v jednom či více jejich ovládacích prvcích. Formulář či sestavu můžete odstranit a importovat je ze záložní kopie databáze, nebo můžete použít některou z následujících možností:
    • Jde-li o poškození samotného formuláře či sestavy, vytvořte nový formulář nebo sestavu a potom zkopírujte ovládací prvky z původního formuláře či sestavy.
    • Jde-li o poškození v ovládacím prvku formuláře či sestavy, vytvořte nový formulář nebo sestavu a potom znovu vytvořte ovládací prvky v novém formuláři či sestavě. Doporučujeme znovu vytvořit všechny ovládací prvky, protože nelze zjistit, které z nich jsou poškozené.
  7. Jde-li o poškození v makru nebo modulu, pak může být přímo v makru či modulu nebo v jejich obsahu. Makro nebo modul můžete odstranit a importovat ze záložní kopie databáze, nebo můžete použít některou z následujících možností:
    • Jde-li o poškození samotného makra nebo modulu, vytvořte nové makro či modul a potom zkopírujte obsah z původního makra či modulu.
    • Poškození se může týkat znaků, které nenáleží do sady ASCII, vložených do modulu. Uložte modul jako textový soubor, odeberte veškerá vadná nebo neobvyklá data a potom znovu načtěte textový soubor do nového modulu.
    • Jde-li poškození obsahu makra nebo modulu, je třeba vytvořit nové makro či modul a potom znovu vytvořit obsah původního makra či modulu.
Není-li možné opravit databázi těmito postupy, je pravděpodobně poškozená nezvratně. V takovém případě doporučujeme obnovit poslední zálohu databáze nebo databázi vytvořit znovu.

Jako poslední možnost můžete využít službu opravy databází aplikace Microsoft Access, kterou mohou nabízet někteří konzultanti. Jedná se o velmi specializovanou službu, proto je při hledání konzultanta nejvhodnější vyvěsit zprávu v internetové diskusní skupině „Third Party and User Groups“ aplikace Microsoft Access. Adresa této diskusní skupiny je:
microsoft.public.access.3rdpartyusrgrp
Další informace o diskusních skupinách na téma aplikace Microsoft Access naleznete v následujícím článku databáze Microsoft Knowledge Base: Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
287756 Po kompresi databáze není vynulováno nastavení pole Automatické číslo (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Proč může dojít k poškození souborů MDB

Existují tři hlavní důvody, proč může dojít k poškození souboru MDB:
  • přerušená operace zápisu,
  • vadný síťový hardware,
  • otevření a uložení souboru MDB v jiném programu.

Přerušená operace zápisu

Aplikaci Access je vždy třeba náležitě ukončit klepnutím na příkaz Konec nebo Zavřít v nabídce Soubor. Pokud je databáze otevřená, probíhá zápis dat a dojde k neobvyklému ukončení aplikace Access, databázový stroj Jet může označit databázi jako podezřelou nebo poškozenou. To může nastat, když se ručně vypne počítač bez předchozího ukončení systému Windows nebo při výpadku proudu. Může dojít k dalším situacím, kdy nedojde k ukončení aplikace Access, ale přesto dochází ke kolizi se zápisem dat na disk strojem Jet při otevřené databázi. Může k tomu dojít například při kolizích dat v sítích nebo při poruše diskových jednotek. Dojde-li k některému z těchto typů výpadků, může stroj Jet označit databázi jako pravděpodobně poškozenou.

Když stroj Jet zahájí operaci zápisu, nastaví příznak, který po dokončení operace vynuluje. Dojde-li k přerušení operace zápisu, příznak zůstane nastavený. Při dalším pokusu o otevření databáze stroj Jet zjistí, že je nastavený příznak, a oznámí, že databáze je poškozená. Ve většině případů nejsou data v databázi skutečně poškozená, ale nastavený příznak upozorní stroj Jet, že mohlo dojít k poškození. V těchto případech lze databázi obvykle obnovit pomocí komprese nebo opravy (či oběma způsoby). Naštěstí existují způsoby, jak zjistit, který uživatel a pracovní stanice jsou odpovědní za to, že došlo k označení souboru za podezřelý. Pomocí jazyka Microsoft Visual Basic for Applications v aplikaci Access lze sestavit seznam uživatelů přihlášených k určité databázi.
208449 Diskusní skupiny o aplikaci Microsoft Access na Internetu (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
Další informace o postupu naleznete v tomto článku v části „Jak určit uživatele/pracovní stanice způsobující označení souboru za podezřelý“.

Vadný síťový hardware

Někdy může dojít k poškození i bez jakéhokoli zásahu databázového stroje Jet. Příčinou poškození souboru může být například vadný síťový hardware. Může to být způsobeno jedním či několika články hardwarového řetězce mezi počítačem, kde je databáze umístěná, a počítačem, ve kterém je databáze otevřená. Těmito články mohou být (mimo jiné) síťové karty, síťové kabely, směrovače a rozbočovače.

Obvyklým ukazatelem na poškození zapříčiněné hardwarem jsou soubory MDB, které nelze obnovit pomocí komprese, opravy ani nástrojem Jetcomp. Hardwarem způsobené poškození se obvykle opakuje, dokud nedojde k opravě či výměně příslušného hardwaru.

Otevření a uložení souboru MDB v jiném programu

Neexistuje způsob, jak obnovit soubor MDB, který byl otevřen a posléze uložen v jiném programu. Soubor MDB můžete například otevřít a uložit v aplikaci Microsoft Word, potom však nebude možné soubor obnovit jinak než ze záložní kopie. Otevřete-li neúmyslně soubor MDB v jiné aplikaci, nesmíte jej uložit. Otevření souboru MDB v jiné aplikaci je bezúčelné, protože uvidíte pouze série zdánlivě náhodných znaků.

Jak určit uživatele/pracovní stanice způsobující označení souboru za podezřelý

Chcete-li při řešení problému zjistit, co je příčinou poškození databáze, můžete se podívat, kdo je k ní přihlášený. Pomocí jazyka Microsoft Visual Basic for Applications v aplikaci Access 2002 nebo Access 2003 lze získat seznam uživatelů přihlášených k určité databázi.
Další informace o provedení tohoto postupu najdete v následujícím článku znalostní báze Microsoft Knowledge Base:
285822 Jak v aplikaci Access 2002 nebo Access 2003 zjistit pomocí nástroje Microsoft Jet UserRoster uživatele přihlášené k databázi (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Jak předcházet poškození

Chcete-li zabránit poškození databáze:
  • Zamezte výpadkům napájení během zápisů do databáze. Výpadek napájení během zápisu do databáze může způsobit, že databáze zůstane v podezřelém stavu.
  • Zamezte výpadkům připojení k síti.
  • Zamezte neobvyklému ukončení připojení stroje Microsoft Jet, jako například výpadkům napájení, ručnímu vypnutí počítače, ukončení aplikace prostřednictvím Správce úloh a podobně.
  • Když programujete, zavřete všechny otevřené objekty DAO a ADO. Příkladem mohou být objekty Sada záznamů, QueryDef, TableDef a Database.
  • Závažné chyby systému téměř vždy vedou neobvyklému ukončení aplikací. Je-li vaše databáze náchylná k závažným chybám, doporučujeme co nejdříve odstranit příčinu těchto chyb, než dojde k takovému poškození databáze, že ji nebude možné otevřít ani obnovit. Další informace o postupu a ukázkový kód, který lze použít, naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
    285822 Jak v aplikaci Access 2002 nebo Access 2003 zjistit pomocí nástroje Microsoft Jet UserRoster uživatele přihlášené k databázi (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
    Další informace o závažných chybách systému naleznete v následujících článcích databáze Microsoft Knowledge Base:
    294301 ACC2002: Jak řešit závažné chyby systému v aplikaci Access 2002 v počítači se systémem Microsoft Windows 2000 (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
  • Často komprimujte databázi.
  • Nespouštějte protokol IPX na serveru Microsoft Windows NT Server, když jsou databáze stroje Jet umístěné v síti a klientem je systém Microsoft Windows 95 s rozhraním IPX/SPX. Na serveru Windows NT Server používejte protokol TCP-IP a v klientovi se systémem Win95 dvouprotokolový zásobník protokolu IPX a TCP-IP. (Mezi systémy Windows NT a Windows NT s rozhraním IPX/SPX k problému nedochází, ani mezi systémem Novel a jakýmkoli klientem.)
  • Zamezte velkému počtu operací otevření a zavření ve smyčce (více než 40 000 po sobě jdoucích operací otevření a zavření může způsobit poškození).

Zvláštní poznámka o převedených databázích

Došlo-li ve verzích aplikace Access starších než Access 2002 k chybám při převodu databáze do aktuální verze, nebylo snadné zjistit, které objekty byly postiženy chybou a mohly obsahovat znatelné poškození.

Dojde-li k chybám při převodu souboru aplikace Access ve verzích Microsoft Access 2002 a v novějších verzích, lze zobrazit souhrn těchto chyb tak, že v novém souboru aplikace Access otevřete tabulku Chyby při převodu. Tabulka Chyby při převodu obsahuje následující sloupce:

Typ objektu. Typ databázového objektu, ve kterém aplikace Access zjistila chybu, nebo hodnota „Databáze“, pokud aplikace Access zjistila chybu, která nesouvisí s konkrétním typem objektu.

Název objektu. Název objektu, ve kterém aplikace Access zjistila chybu. Pokud však aplikace Access během převodu zjistí chybu kompilace, nebude určen název modulu obsahujícího chybu.

Popis chyby. Je-li třeba, stisknutím kláves SHIFT+F2 můžete zobrazit celý popis chyby.

Odkazy

Chcete-li získat další informace o opravě databází, v nabídce Nápověda klepněte na příkaz Nápověda pro Microsoft Access, do pole v Pomocníkovi Office nebo v Průvodci odpověďmi zadejte text oprava a klepněte na tlačítko Hledat. Další informace o řešení problémů s databázemi v předchozích verzích aplikace Access naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
209137 Jak vyřešit problémy a opravit poškozenou databázi stroje Jet 4.0 v aplikaci Access 2000 (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
279334 Jak opravit poškozenou databázi stroje Jet 3.5 (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
109953 Jak vyřešit problémy a opravit poškozené databáze stroje Jet 3.0 a starší (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
284152 Jak řešit závažné chyby systému v aplikaci Access 2002 v počítači se systémem Windows Millennium (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Vlastnosti

ID článku: 283849 - Poslední aktualizace: 12. března 2007 - Revize: 6.2
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Klíčová slova: 
kbcorrupt kbtshoot kbhowto KB283849

Dejte nám zpětnou vazbu

 

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