Existem muitas dúvidas no DBA.SE sobre DBCC CHECKDB
e como resolver problemas quando os erros são retornados. Minha pergunta específica é sobre realmente ser notificado sobre DBCC CHECKDB
erros retornados. Quase todos os DBAs sabem que você pode automatizar o comando e deve executá-lo com frequência.
Me deparei com este artigo de Cindy Gross , que tem algumas notas muito boas. Nele ela menciona o uso do SQL Server Agent que se encontrar erros na execução do CHECKDB
comando ele falhará nessa etapa (ou trabalho dependendo da configuração). Ela aponta para a postagem do blog de Paul Randal sobre o assunto aqui .
Agora estou curioso para saber se alguém sabe que a tarefa de verificação de integridade do banco de dados em um plano de manutenção faria a mesma coisa? O MSDN não menciona que o fará e, sinceramente, não fui um ambiente em que se deparou com um problema de corrupção; então não posso dizer que sim. Isso seria em vez de simplesmente configurar um SQL Agent Job com várias etapas que executam o comando específico em cada banco de dados, como sugerido por Cindy.
Pensamentos? Obviamente, a prova está no pudim, portanto, fornecer mais do que apenas um palpite seria útil ...
A Tarefa de Verificação de Integridade do Banco de Dados fornecida no plano de manutenção emite DBCC CHECKDB WITH NO_INFOMSGS no banco de dados selecionado. Você pode visualizar seu comando clicando em view-SQL na configuração da tarefa. Se você duvida do comando SQL gerado, pode usar o SQL Profiler para ver seu comando SQL. Se for encontrada corrupção, o trabalho do agente com esta tarefa de manutenção gerará erro e falhará (com a configuração adequada da etapa do trabalho).
Uma coisa a apontar, executar DBCC CHECKDB é igual a executar DBCC CHECKALLOC, DBCC CHECKTABLE, DBCC CHECKCATALOG e outras validações. Se você estiver executando DBCC CHECKDB, não precisará executá-los separadamente. Executá-los separadamente geralmente é executar uma verificação de integridade específica ou precisar distribuir a verificação de integridade para uma tarefa menor devido ao tempo limitado para executar o DBCC CHECKDB inteiro. Mais informações podem ser encontradas aqui no MSDN.
Configurei uma instância do SQL Server 2008 R2 e tenho os seguintes bancos de dados:
Eu configuro um Plano de Manutenção com o
Check Database Integrity Task
nele.Depois de executar o plano, ele falhou:
Depois de revisar o log, ele mostrou que continuará verificando bancos de dados adicionais depois de encontrar um que falhou devido à corrupção encontrada:
Para ser notificado sobre erros de DBCC CHECKDB, eu analiso o log de erros com o Powershell todas as noites e ele nos envia um e-mail quando há um erro no log de erros do SQL e, especificamente, se houver erros de DBCC
É a maneira mais fácil de monitorar mais de 700 bancos de dados