Tenho um BD corrompido, não sei a causa, é um BD de uma aplicação cujo distribuidor nunca teve esse tipo de corrupção.
Então tentei DBCC com REPAIR_ALLOW_DATA_LOSS conforme sugerido em:
Foi detectada uma inconsistência durante uma operação interna no banco de dados
mas não funciona.
O que mais posso tentar? Vi que existem ferramentas que prometem consertar o BD (primeiramente encontradas na pesquisa do Google https://www.stellarinfo.com/gdc/sql/sql-server-database-repair-tool.php ), mas me pergunto se devo delegar a um blackbox o destino do meu BD? Ok, posso fazer um backup, é claro, mas antes de comprar uma ferramenta em desespero, gostaria de pedir mais conselhos. Ou essas ferramentas simplesmente executam o DBCC e, portanto, são inúteis...
Esse é o tipo de erro DBCC CHECKDB('My_DB') WITH NO_INFOMSGS, ALL_ERRORMSGSshows
que me mostra (tenho muitos desses)
Msg 8939, Level 16, State 98, Line 7 Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 3759437827725787136 (type Unknown), page (13558:888026339). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 133129 and -14.
Tentando reparar a perda de dados com
ALTER DATABASE TW SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
BEGIN TRANSACTION;
DBCC CHECKDB ('My_DB', REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE TW SET MULTI_USER;
COMMIT;
eu tenho:
Msg 8939, Nível 16, Estado 98, Linha 3 Erro de tabela: ID do objeto 0, ID do índice -1, ID da partição 0, ID da unidade de alocação -9222773885349068800 (tipo Desconhecido), página (15657:-1933734559). O teste (IS_OFF (BUF_IOERR, pBUF->bstat)) falhou. Os valores são 2057 e -4. O reparo desse erro requer que outros erros sejam corrigidos primeiro.
O que posso fazer?
Também percebi que ao consultar registros de tabela específicos, vejo que alguns BLOBs estão corrompidos. A exclusão de registros resolve esse tipo de problema?
Obrigado!
Restaurar do backup
Boa sorte.