Abbiamo un database SQL 2000. Il server si è bloccato a causa di un errore dell'array Raid. Ora quando eseguiamo DBCC CHECKDB, riceviamo un errore che ci sono 27 errori di coerenza in 9 pagine.
Quando eseguiamo DBCC PAGE su queste pagine, otteniamo questo:
Msg 8939, Level 16, State 106, Line 1
Table error: Object ID 1397580017, index ID 2, page (1:8404521). Test (m_freeCnt == freeCnt) failed. Values are 2 and 19.
Msg 8939, Level 16, State 108, Line 1
Table error: Object ID 1397580017, index ID 2, page (1:8404521). Test (emptySlotCnt == 0) failed. Values are 1 and 0.
Poiché l'indice indicato non è un cluster ed è creato da una costante unica che include 2 colonne, abbiamo provato a eliminare e ricreare l'indice. Ciò ha comportato il seguente errore:
CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 2. Most significant primary key is '3280'.
The statement has been terminated.
Comunque in esecuzione
Select var_id,result_on
from tests
group by var_id,result_on
having count(*)>1
restituisce 0 righe.
Ecco cosa stiamo programmando di fare:
- Ripristinare una copia di crash pre-server del DB ed eseguire DBCC CHECKDB
- Se restituisce pulito, ripristina nuovamente senza recupero
- Applicare tutti i backup TLOG equivalenti
- Arresta l'app di produzione, esegui un backup del registro di coda e applica anche quello
- Rilasciare il DB prod e rinominare il DB appena ripristinato per renderlo prod
- Avvia l'app prod
Qualcuno potrebbe fare dei buchi in questo approccio? Forse, suggerire un approccio diverso? Ciò di cui abbiamo bisogno sono tempi di fermo minimi.
Dimensione database SQL 2000 94 GB La tabella con pagine danneggiate ha 460 milioni + righe di dati
Grazie per l'aiuto.
Raj