Condividi tramite


Utilizzo dei metodi Verify e Repair

I metodi Verify e Repair consentono di esaminare l'integrità dei dati di un database di Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) e correggere i problemi eventualmente riscontrati. Per ulteriori informazioni, vedere Utilizzo dei metodi Verify e Repair.

Verifica di un database

I file di database di SQL Server Compact Edition sono divisi in unità logiche di 4 KB, denominate pagine. Al momento della scrittura di ogni pagina nel file di database, SQL Server Compact Edition calcola e salva un valore di checksum per la pagina. In caso di modifica o danneggiamento della pagina dopo la scrittura nel file, la pagina non corrisponderà più al valore di checksum previsto.

Chiamando il metodo Verify della classe System.Data.SqlServerCe.SqlCeEngine, vengono ricalcolati i valori di checksum di ogni pagina del file di database e ne viene verificata la corrispondenza con i valori previsti. Se il metodo restituisce true, non si è verificato alcun danneggiamento del file di database. Se restituisce false, il file di database è stato danneggiato e l'applicazione deve chiamare il metodo Repair.

Correzione di un database

In caso di danneggiamento di un file di database, è possibile tentare di recuperare il file di database utilizzando il metodo Repair dell'oggetto SqlCeEngine. Il metodo Repair esegue la scansione del database e calcola i valori di checksum delle pagine. Se un valore di checksum non corrisponde a quello calcolato in precedenza al momento della scrittura della pagina nel database, la pagina viene considerata danneggiata.

In occasione della chiamata del metodo Repair, sono disponibili due opzioni:

  • RepairOption.DeleteCorruptedRows
    Se il metodo Repair viene richiamato con il valore DeleteCorruptedRows, tutte le pagine danneggiate vengono eliminate. Se la pagina danneggiata contiene lo schema del database, ciò potrebbe causare la perdita di dati significativi. I dati recuperati utilizzando questa opzione, tuttavia, non dovrebbero essere in alcun modo danneggiati.
  • RepairOption.RecoverCorruptedRows
    Se il metodo Repair viene richiamato con il valore RecoverCorruptedRows , il database tenterà di leggere i dati delle pagine danneggiate. È così possibile recuperare una maggiore quantità di dati, ma ciò non garantisce che i dati recuperati non siano danneggiati a livello logico.

[!NOTA] Il metodo Repair si rivela utile soltanto se SQL Server Compact Edition restituisce un errore con numero di errore nativo 25017 (SSCE_M_DATABASECORRUPTED) oppure se una chiamata al metodo Verify dell'oggetto SqlCeEngine restituisce false.

Esempio

Descrizione

Nell'esempio seguente viene illustrato l'utilizzo dei metodi Verify e Repair.

Codice

C#

SqlCeEngine engine = new SqlCeEngine("Data Source = AdventureWorks.sdf");
        if (false == engine.Verify())
        {
            MessageBox.Show("Database is corrupted.");
            engine.Repair(null, RepairOption.RecoverCorruptedRows);
        }
  

Codice

Visual Basic

Dim engine As New SqlCeEngine("Data Source = AdventureWorks.sdf")
        If False = engine.Verify() Then
            MessageBox.Show("Database is corrupted.")
            engine.Repair(Nothing, RepairOption.RecoverCorruptedRows)
        End If

Vedere anche

Riferimenti

Oggetti dello spazio dei nomi System.Data.SqlServerCe
Spazio dei nomi System.Data.SqlServerCe (documentazione di riferimento di .NET Framework)

Guida in linea e informazioni

Assistenza su SQL Server Compact Edition