Estou no processo de adicionar o WITH CHECKSUM
sinalizador em nossos backups diários de SQL, como parte de um esforço para garantir melhor a integridade dos dados.
Eu definitivamente quero saber se um erro de soma de verificação é encontrado, mas também não quero que meu trabalho pare na água no meio da noite; Eu quero que ele termine de fazer o backup do banco de dados "ruim" e continue fazendo o backup dos outros bancos de dados no servidor.
Se eu usar BACKUP WITH CHECKSUM, CONTINUE_AFTER_ERROR
, ele ainda lançará o erro apropriado ( SEV 22
ou Error 825
qualquer outra coisa) que acionará meu alerta associado? Ou CONTINUE_AFTER_ERROR
suprime isso completamente, e eu só saberia sobre o problema se analisasse a saída da etapa do trabalho?
Eu simplesmente testaria, mas não tenho um banco de dados com CHECKSUM
inconsistências conhecidas.
Sim, vai continuar e terminar, há um exemplo neste post mais antigo. Ele também contém um arquivo de banco de dados quebrado (para versões mais antigas) para brincar:
https://blogs.msdn.microsoft.com/sqlserverstorageengine/2007/04/17/example-corrupt-database-to-play-with-and-some-backuprestore-things-to-try/
Eu acho que é realmente muito importante como dba simular todos esses casos, eu sei por experiência com clientes que é arriscado e demorado se você tiver que pesquisar esses métodos em um tempo de inatividade. Então parabéns por perguntar. Aqui está um método lunático/engenhoso para fazer corrupção com SQL:
https://sqlblogcasts.com/blogs/tonyrogerson/archive/2007/03/10/how-to-create-a-corrupt-database-using-bulk-insert-update-and-bcp-sql-server-as- a-hex-editor.aspx
Com uma pequena alteração nas instruções de Brent Ozar (usei
SET PAGE_VERIFY CHECKSUM
em vez deSET PAGE_VERIFY NONE
), consegui criar um pequeno banco de dados com uma página corrompida (e, portanto, uma soma de verificação incompatível) em um ambiente de laboratório, para testar completamente todas as opções de backups possíveis.Isso me deu a resposta para minha pergunta: Sim , se você fizer um
BACKUP WITH CHECKSUM, CONTINUE_AFTER_ERROR
, ele ainda lançará um erro, mas esse erro não seráError: 824, Severity: 24
, seráError: 3043, Severity: 16
.No momento, não alerto sobre todos os
Sev 16
erros (prefiro não obter uma página toda vez que alguém cometer um erro de digitação em uma consulta), então tive que adicionar um novo alerta paraError 3043
ser notificado quando esse problema ocorrer.Minha conclusão final, então, é: se você habilitar a soma de verificação de backup, certifique-se de também estar alertando sobre o erro 3043 .
Algumas leituras e recursos adicionais: