Temos um banco de dados SQL 2000. O servidor travou devido a uma falha no array RAID. Agora, quando executamos o DBCC CHECKDB, obtemos um erro indicando que há 27 erros de consistência em 9 páginas.
Quando executamos o DBCC PAGE nessas páginas, obtemos o seguinte:
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.
Como o índice indicado não é agrupado em cluster e é criado por uma constante constante que inclui 2 colunas, tentamos descartar e recriar o índice. Isso resultou no seguinte erro:
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.
No entanto em execução
Select var_id,result_on
from tests
group by var_id,result_on
having count(*)>1
retorna 0 linhas.
Aqui está o que estamos planejando fazer:
- Restaure uma cópia de falha anterior ao servidor do banco de dados e execute DBCC CHECKDB
- Se isso retornar limpo, restaure novamente sem recuperação
- Aplique todos os backups TLOG subseqüentes
- Interrompa o aplicativo de produção, faça um backup do log de cauda e aplique-o também
- Solte o DB do prod e renomeie o DB recentemente restaurado para torná-lo
- Iniciar aplicativo prod
Alguém poderia fazer furos nessa abordagem? Talvez, sugira uma abordagem diferente? O que precisamos é de um tempo de inatividade mínimo.
SQL 2000 DB Size 94 GB A tabela que possui páginas corrompidas possui 460 milhões + linhas de dados
Obrigado pela ajuda.
Raj