Precisei de fazer uma manutenção num banco de um cliente esses dias e usei os seguintes comandos:
Para pegar erros no banco
USE Nome_banco
GO
EXEC Sp_dboption 'Nome_banco', 'single user', 'true'
DBCC CHECKDB ('Nome_banco') WITH TABLOCK, ALL_ERRORMSGS, NO_INFOMSGS;
EXEC Sp_dboption 'Nome_banco', 'single user', 'false'
/* Torna de volta single user false, para o acesso ao banco ficar normal novamente */
GO |
use Nome_banco
GO
Exec Sp_dboption 'Nome_banco', 'single user', 'true'
DBCC CHECKDB ('Nome_banco') WITH TABLOCK, ALL_ERRORMSGS, NO_INFOMSGS;
Exec Sp_dboption 'Nome_banco', 'single user', 'false'
/* Torna de volta single user false, para o acesso ao banco ficar normal novamente */
GO
fix para corrigir os erros que foram encontrados no comando anterior:
1
2
3
4
5
6
7
8
| USE Nome_banco
GO
EXEC Sp_dboption 'Nome_banco', 'single user', 'true'
/* Deixa em modo single user, para executar os comandos abaixo */
DBCC CHECKTABLE(1823762000,REPAIR_ALLOW_DATA_LOSS)
EXEC Sp_dboption 'Nome_banco', 'single user', 'false'
/* Torna de volta single user false, para o acesso ao banco ficar normal novamente */
GO |
use Nome_banco
GO
Exec Sp_dboption 'Nome_banco', 'single user', 'true'
/* Deixa em modo single user, para executar os comandos abaixo */
DBCC CHECKTABLE(1823762000,REPAIR_ALLOW_DATA_LOSS)
Exec Sp_dboption 'Nome_banco', 'single user', 'false'
/* Torna de volta single user false, para o acesso ao banco ficar normal novamente */
GO
Na linha 5 está o comando que corrige os erros da tabela o id (1823762000) da tabela você consegue pegar no primeiro comando que passei onde lista-se os erros do banco nele tem as tabelas e os ids com erros.
Se estiver usando SQL 2012 o comando muda para:
1
2
3
4
5
6
7
8
| USE Nome_banco
GO
ALTER DATABASE Nome_banco SET SINGLE_USER
/* Deixa em modo single user, para executar os comandos abaixo */
DBCC CHECKTABLE(1823762000,REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE Nome_banco SET MULTI_USER
/* Torna de volta single user false, para o acesso ao banco ficar normal novamente */
GO |
use Nome_banco
GO
ALTER DATABASE Nome_banco SET SINGLE_USER
/* Deixa em modo single user, para executar os comandos abaixo */
DBCC CHECKTABLE(1823762000,REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE Nome_banco SET MULTI_USER
/* Torna de volta single user false, para o acesso ao banco ficar normal novamente */
GO