Help and Support

Identificativo articolo: 209137 - Ultima modifica: venerdì 27 gennaio 2006 - Revisione: 4.1

ACCESS 2000: Risoluzione dei problemi/ripristino di un database Jet 4.0 danneggiato

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I209137
Utenti inesperti: è richiesta la conoscenza dell'interfaccia utente dei computer a utente singolo.

Il contenuto di questo articolo è applicabile solo ai database Microsoft Access (mdb).

Per la versione di questo articolo relativa a Microsoft Access 2002 o Access 2003, vedere 283849  (http://support.microsoft.com/kb/283849/ ) .

In questa pagina

Espandi tutto | Chiudi tutto

Sommario

Fattori ambientali possono danneggiare un file di database. I sintomi di un database danneggiato possono andare dalla comparsa della stringa "#Deleted" in alcuni record, all'impossibilità di aprire gli oggetti nel database o il file di database stesso in Microsoft Access. Le utilità di Microsoft Access Compatta e ripristina consentono di ripristinare e ottimizzare i file di database di Microsoft Access 2000. In questo articolo vengono descritte queste utilità di Access 2000, illustrati metodi alternativi per ripristinare database danneggiati e fornite informazioni sulle cause del danneggiamento di un database.

Informazioni

Sebbene le procedure descritte in questo articolo si rivelino solitamente efficaci nel ripristinare i file di database danneggiati, per salvaguardare i dati, è necessario creare, quando possibile, una copia di backup del file del database.

Utilità Compatta e ripristina

L'utilità Compatta consente di eliminare gli spazi vuoti presenti in un database esistente creando un nuovo database di destinazione e copiando ciascun oggetto dal vecchio database al nuovo. Se si sceglie di compattare il database conservando il nome del database originale anziché assegnare un nuovo nome al database compattato, verrà creato un database temporaneo in cui verranno esportati tutti gli oggetti del database originale. A questo punto il database originale verrà rimosso e al database temporaneo verrà assegnato il nome del database originale.

L'utilità Ripristina tenta di ripristinare solo le tabelle, le query e gli indici di database, mentre non può essere utilizzata per riparare maschere, report, macro e moduli danneggiati.

Di seguito sono elencate le azioni eseguite dall'utilità Compatta:
  • Riorganizzare le pagine della tabella in modo che i dati si trovino in pagine di database adiacenti.

    Questo consente di migliorare le prestazioni in quanto la tabella non risulterà più frammentata nel database.
  • Recuperare lo spazio inutilizzato creatosi a seguito dell'eliminazione di record e oggetti.

    Quando oggetti o i record vengono eliminati dal database, lo spazio che occupavano viene contrassegnato come disponibile. Questo non comporta tuttavia una riduzione della dimensione del database, a meno che il database non venga compattato. Per i database in cui oggetti e record vengono aggiunti, eliminati e aggiornati con una certa frequenza, è necessario compattare spesso il database.
  • Reimpostare i campi Contatore incrementali in modo che il valore successivo allocato sia superiore di uno rispetto al valore più elevato nei record restanti.

    Ad esempio, se tutti i record del database sono stati eliminati, dopo aver compattato il database, il valore del campo Contatore sarà 1 quando verrà aggiunto il record successivo. Se il valore più elevato del campo Contatore nel database è 50, dopo aver compattato il database il valore sarà 51 quando verrà aggiunto il record successivo. Questo si rivela vero anche se sono stati aggiunti al database record con valori superiori a 50, in seguito eliminati prima del compattazione del database.
  • Rigenerare le statistiche delle tabelle utilizzate nel processo di ottimizzazione delle query.

    Queste statistiche possono diventare obsolete con il passare del tempo, solitamente se le transazioni sono state annullate o se il database non è stato chiuso correttamente a causa di un'interruzione di corrente o di un guasto che non ha consentito di chiudere completamente il programma utilizzato da Microsoft Jet prima dello spegnimento del computer.
  • Contrassegnare tutte le query in modo che vengano ricompilate in occasione della successiva esecuzione della query.

    Questa operazione è importante in quanto le statistiche di database possono cambiare e una query precedentemente compilata potrebbe presentare un piano non accurato.

Linee guida per l'esecuzione dell'utilità Compatta e ripristina

Prima di eseguire l'utilità Compatta e ripristina in un database, verificare che siano soddisfatte le seguenti condizioni:
  • Accedere utilizzando un account che dispone di privilegi di protezione Modifica struttura o Amministra per tutte le tabelle del database.
  • Disporre di spazio su disco sufficiente per contenere sia la versione originale che la versione compattata del database, anche se il database viene compattato tramite l'interfaccia utente di Microsoft Access 2000 utilizzando lo stesso nome di file.

    Il database ripristinato o compattato viene rinominato come il database originale solo quando l'utilità Compatta ha esito favorevole.
  • Il database non deve essere aperto da altri utenti.

    Quando si compatta un database, quest'ultimo deve essere aperto in esclusiva da Microsoft Jet per impedire che altri utenti vi accedano e vi apportino delle modifiche durante il processo di compattazione.

Correzione di un database danneggiato

Nella procedura descritta di seguito è illustrato un metodo generale per ripristinare un database danneggiato:
  1. Installare il service pack più recente di Microsoft Jet.

    In questo modo si è sicuri di disporre delle più recenti correzioni dei bug per Microsoft Jet. Per ulteriori informazioni su come scaricare la versione più recente di service pack di Jet 4.0, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    239114  (http://support.microsoft.com/kb/239114/ ) Versione aggiornata del modulo di gestione di database Microsoft Jet 4.0 disponibile per il download
    In un ambiente di rete, è necessario installare la versione aggiornata del service pack di Microsoft Jet su tutti i computer client. L'installazione del service pack di Microsoft Jet in un file server di rete non è richiesta, a meno che il file server di rete non esegua anche una o più applicazioni che utilizzano Microsoft Jet.
  2. Eseguire una copia di backup del file di database danneggiato (mdb).
  3. Eliminare il file ldb, se presente. Chiudere il corrispondente file mdb prima di eliminare questo file.

    Il file ldb è utilizzato per determinare quali record sono bloccati in un database condiviso e da chi sono bloccati. Se un database può essere condiviso da più utenti, viene creato un file ldb con lo stesso nome del corrispondente file di database (mdb). Ad esempio, se si apre il database di esempio Northwind.mdb presente nella cartella C:\Msoffice\Access per condividerlo con altri utenti, nella stessa cartella verrà automaticamente creato un file Northwind.ldb. Il file ldb viene eliminato automaticamente dopo che l'ultimo utente è uscito dal database, eccezione fatta in due casi:

    • quando l'ultimo utente non dispone di autorizzazioni di eliminazione per la cartella contenente il file mdb;
    • quando il database è danneggiato
    Il file ldb contiene un elenco degli utenti che hanno il database aperto.

    Durante il processo di risoluzione dei problemi che causano il danneggiamento di un database, può essere necessario in alcuni casi verificare chi è attualmente connesso al database. A tale scopo, è possibile utilizzare Microsoft Visual Basic, Applications Edition in Access 2000 per creare un elenco degli utenti attualmente collegati a un determinato database. Per ulteriori informazioni su come eseguire questa operazione e sul codice di esempio, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    198755  (http://support.microsoft.com/kb/198755/ ) HOW TO: Come verificare quali utenti sono connessi a un database in Access 2000 mediante Jet UserRoster
  4. Eseguire l'utilità Compatta e ripristina, come illustrato di seguito:
    1. Se un database è aperto, chiuderlo.
    2. Scegliere Utilità database dal menu Strumenti, quindi scegliere Compatta e ripristina database.
    3. Nella finestra di dialogo Compatta database da, fare clic sul file da compattare, quindi scegliere Compatta.
    4. Nella finestra di dialogo Compatta database in, immettere un nuovo nome file, quindi scegliere Salva.

      Se le operazioni di ripristino e di compattazione non vengono completate, verrà visualizzato un apposito messaggio. In questo caso significa che il danno è talmente grave da non poter essere corretto.
  5. Se la procedura per il ripristino di un database danneggiato descritta in precedenza non ha successo, cercare di creare un nuovo database importandovi quindi gli oggetti, uno a uno, dal vecchio database. Quindi ricreare le relazioni. Questa tecnica consente di risolvere i problemi con le tabelle di sistema danneggiate del database.

    Non è possibile importare pagine di accesso ai dati utilizzando l'Importazione guidata, bensì è necessario aprirle direttamente nel database. Per effettuare questa operazione, attenersi alla seguente procedura:
    1. Nella finestra Database fare clic su Pagine da Oggetti.
    2. Scegliere il pulsante Nuovo.
    3. Selezionare Pagina Web esistente dalla finestra di dialogo Nuova pagina di accesso ai dati, quindi scegliere OK.
  6. Se il danno riguarda una tabella e la procedura descritta in precedenza non ha avuto successo, provare quanto segue:

    1. Da Microsoft Access 2000, esportare la tabella in un file ASCII (testo delimitato). Per ulteriori informazioni su questo argomento, cercare "testo delimitato" e visualizzare l'argomento "Esportazione di dati di Access" nell'Indice della Guida in linea di Microsoft Access.
    2. Eliminare qualsiasi relazione associata alla tabella ed eliminare la tabella dal database.
    3. Compattare il database.
    4. Ricreare la tabella e le sue relazioni.
    5. Se si utilizza un editor di testo, è possibile esaminare il file ASCII al fine di identificare eventuali dati errati o anomali e rimuoverli dai record. Salvare il file in formato file di testo ASCII.
    6. Reimportare il file ASCII nella tabella appena ricreata. Per ulteriori informazioni su questo argomento, cercare "testo delimitato" e visualizzare l'argomento "Importazione o collegamento" nell'Indice della Guida in linea di Microsoft Access.
    7. Inserire nuovamente i record che si è stati costretti a eliminare.
  7. Nel caso di una maschera o un report danneggiato, il danno può riguardare la maschera o il report stesso oppure uno dei loro controlli. È possibile eliminare la maschera o il report e importarlo dalla copia di backup del database oppure utilizzare una delle seguenti opzioni:
    • Se il danno riguarda la maschera o il report, creare una nuova maschera o un nuovo report e copiare i controlli dalla maschera o dal report originale.
    • Nel caso di un controllo di maschera o di report danneggiato, creare una nuova maschera o un nuovo report e ricrearvi i controlli. È necessario ricreare tutti i controlli, in quanto non esiste un modo per poter identificare quali siano i controlli danneggiati.
  8. Nel caso di una macro o di un modulo danneggiato, il danno può riguardare la macro o il modulo stesso oppure il relativo contenuto. È possibile eliminare la macro o il modulo e importarlo nuovamente dalla copia di backup del database oppure utilizzare una delle opzioni seguenti:
    • Nel caso di una macro o di un modulo danneggiato, creare una nuova macro o un nuovo modulo e copiarvi il contenuto della macro o del modulo originale.
    • Il danno potrebbe riguardare caratteri non ASCII incorporati nel modulo, pertanto salvare il modulo come file di testo, rimuovere qualsiasi dato errato o anomalo e ricaricare il file di testo in un nuovo modulo.
    • Se il danno riguarda il contenuto della macro o del modulo, sarà necessario creare una nuova macro o un nuovo modulo e ricreare il contenuto della macro o del modulo originale.
Se non è possibile ripristinare il database utilizzando la procedura descritta, significa probabilmente che il database non può essere riparato. In tal caso, è necessario ripristinare l'ultima copia di backup del database disponibile oppure ricreare il database.

Come alternativa finale è possibile ricorrere ad aziende in grado di fornire un servizio di ripristino dei database di Microsoft Access. Poiché si tratta di un servizio specialistico, il modo più efficiente per trovare un'azienda in grado di offrirlo consiste nell'inserire un messaggio nel newsgroup Internet dedicato a Microsoft Access "Third Party and User Groups" al seguente indirizzo:
microsoft.public.access.3rdpartyusrgrp
Per ulteriori informazioni sui newsgroup Internet relativi a Microsoft Access, fare clic sul numero dell'articolo della Knowledge Base riportato di seguito (il contenuto potrebbe essere in inglese):
150057  (http://support.microsoft.com/kb/150057/ ) ACC: Newsgroup di Microsoft Access disponibili in Internet

Cause comuni del danneggiamento di file mdb

Esistono tre cause principali che possono determinare il danneggiamento dei file mdb in Access o Jet.

Database contrassegnato come danneggiato o sospetto a causa dell'interruzione di un'operazione di scrittura

Chiudere il database in maniera corretta scegliendo Esci o Chiudi dal menu File. Tuttavia, se durante l'esecuzione di un'operazione di scrittura di dati in un database aperto, Access viene chiuso in maniera anomala, è possibile che il modulo di gestione di database Jet contrassegni il file di database come sospetto o danneggiato. Questo si può verificare se il computer viene spento manualmente o a causa di un'interruzione di corrente senza che sia stata prima chiusa la sessione di Windows. Altre situazioni che pur non determinando la chiusura di Access potrebbero interferire con le operazioni di scrittura dei dati su disco mentre il database è aperto, sono ad esempio la collisione di dati nella rete o il malfunzionamento delle unità disco. Quando si verifica una di queste interruzioni, Jet contrassegna il database come potenzialmente danneggiato.

Quando Jet inizia un'operazione di scrittura, viene impostato un flag, che verrà reimpostato solo al termine dell'operazione. Se un'operazione di scrittura viene interrotta, tale flag rimarrà impostato e risulterà tale la volta successiva in cui si tenterà di aprire nuovamente il database, determinando di conseguenza il contrassegno del database come danneggiato. Nella maggior parte dei casi i dati contenuti nel database non sono effettivamente danneggiati, ma indipendentemente da questo la presenza del flag impostato fa sì che Jet segnali il database come danneggiato. In tali casi, mediante la compattazione e/o il ripristino del database, è solitamente possibile correggere il database. Fortunatamente esistono vari modi per determinare l'utente e la workstation responsabili del contrassegno del file come sospetto. A tale proposito vedere la sezione "Metodi per determinare l'utente e/o la workstation responsabili del contrassegno del file come sospetto" di seguito in questo articolo.

Hardware di rete difettoso

In questo caso il danneggiamento del file non coinvolge il modulo di gestione di database Jet, bensì il file viene effettivamente danneggiato da una causa esterna. Tale causa può essere uno o più collegamenti nella catena dell'hardware che collega il computer su cui risiede il database e il computer in cui il database viene aperto. Tale catena può essere composta tra l'altro da schede di interfaccia di rete, cavi di rete, router e hub.

Solitamente i file di database danneggiati dall'hardware non possono essere corretti tramite l'utilizzo di utilità di compattazione, ripristino o Jetcomp. I file di database continueranno a venire danneggiati finché il componente hardware responsabile non sarà stato riparato o sostituito.

Apertura e salvataggio di file mdb in un altro programma

Non esiste alcun modo per ripristinare un file mdb che sia stato aperto e salvato in un programma diverso. Microsoft Word consente ad esempio di aprire e salvare un database di Access. Per inciso non serve a nulla aprire un file mdb in un'altra applicazione, in quanto verranno visualizzati solo caratteri estesi. Quando si tenta di aprire in Access un file mdb salvato in questo modo, viene chiesto di specificare una password di database, anche se il file non è mai stato protetto da password in Access. La richiesta di specificare una password in questi casi è dettata dal fatto che il primo intervallo di byte che Access va a verificare all'apertura del file è quello destinato alla password del database. Se tale byte contiene dati danneggiati, Access tratterà il file come protetto da password. Se anche esistesse un modo per aggirare la richiesta di password, non sarebbe comunque possibile ripristinare il database in quanto la struttura binaria risulta frammentata e quindi illeggibile in Access. L'unica soluzione, in questi casi, consiste nel ripristinare il database da una copia di backup. Per ulteriori informazioni su questo problema, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
243895  (http://support.microsoft.com/kb/243895/ ) ACC 2000: La password viene visualizzata anche se non è mai stata impostata

Versioni non corrette del modulo di gestione di database Jet

È possibile causare il danneggiamento di un database di Access anche eseguendo versioni differenti del modulo di gestione di database Jet. Le operazioni di scrittura nel database vengono eseguite in modo diverso se si utilizzano versioni differenti di Jet e pertanto possono essere causa di danneggiamento di un database.

Metodi per determinare l'utente e/o la workstation responsabili del contrassegno del file come sospetto

Durante il processo di risoluzione per individuare le cause di danneggiamento di un database, potrebbe essere necessario in alcuni casi verificare gli utenti attualmente connessi al database. A tale scopo, è possibile utilizzare Microsoft Visual Basic, Applications Edition in Access 2000 per creare un elenco degli utenti attualmente collegati a un determinato database.

Per ulteriori informazioni su come eseguire questa operazione e sul codice di esempio, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
198755  (http://support.microsoft.com/kb/198755/ ) HOW TO: Come verificare quali utenti sono connessi a un database in Access 2000 mediante Jet UserRoster

Metodi per evitare il danneggiamento dei file di database

  • Evitare le interruzioni di corrente durante le operazioni di scrittura nel database, in quanto questi eventi possono lasciare il database in uno stato sospetto.
  • Evitare le cadute delle connessioni di rete.
  • Evitare che le connessioni di Microsoft Jet vengano terminate in modo non corretto ovvero a causa di un'interruzione di corrente, di una chiusura manuale o di una chiusura dell'applicazione da parte di Task Manager.
  • Durante la programmazione, chiudere tutti gli oggetti DAO e ADO aperti, quali Recordset, QueryDef, TableDef e Database.
  • Gli errori di sistema irreversibili causano quasi sempre interruzioni anomale del database. Se pertanto il database è soggetto a errori irreversibili, è necessario risolverli prima che possano danneggiare il database in misura tale da non poterlo più aprire né ripristinare.Per ulteriori informazioni sugli errori di sistema irreversibili, fare clic sul numero dell'articolo della Knowledge Base riportato di seguito:
    208488  (http://support.microsoft.com/kb/208488/ ) ACC 2000: Risoluzione dei problemi di errori di pagina non valida in Access 2000
  • Compattare spesso il database.
  • Non eseguire IPX in un server Windows NT, se i database Jet si trovano sparsi sulla rete e il client è un computer che esegue Microsoft Windows 95 con IPX/SPX. Eseguire invece TCP-IP nel server Windows NT e uno stack di protocollo doppio di IPX e TCP/IP nel computer client che esegue Windows 95. Windows NT e Windows NT con IPX/SPX non causano questo problema, come anche Novell.
  • Evitare di eseguire un numero elevato di operazioni di apertura/chiusura in un ciclo ovvero un numero di operazioni di apertura/chiusura consecutive compreso tra 40.000 e un milione.
  • Verificare che sia installata la versione più recente di Microsoft Jet Service Pack in tutti i computer client che accedono al file di database.

Riferimenti

Per ulteriori informazioni sul ripristino dei database, scegliere Guida in linea di Microsoft Access dal menu ?, digitare ripristino nella casella dell'Assistente di Office o della Ricerca libera e scegliere il pulsante Cerca per visualizzare l'argomento.

Per ulteriori informazioni su una utility scaricabile con cui è possibile anche ripristinare un database danneggiato, fare clic sul numero dell'articolo della Knowledge Base riportato di seguito:
273956  (http://support.microsoft.com/kb/273956/ ) ACC 2000: Utilità Jet Compact disponibile nell'Area download Microsoft
Per ulteriori informazioni sulla risoluzione dei problemi di database nelle versioni precedenti di Access, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito:
279334  (http://support.microsoft.com/kb/279334/ ) ACC97: Ripristino di un database Jet 3.5 danneggiato
109953  (http://support.microsoft.com/kb/109953/ ) ACC: Come ripristinare un database danneggiato

Le informazioni in questo articolo si applicano a
  • Microsoft Access 2000 Standard Edition
Chiavi: 
kbcorrupt kbrepair kbtshoot kbdatabase kbhowto KB209137
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Traduzione articoli

 

Related Support Centers