Eu tenho um banco de dados SQL Server com a PAGE_VERIFY
opção definida como NONE
. Quando defino isso como CHECKSUM
, apenas as páginas alteradas a partir desse ponto obtêm sua soma de verificação calculada e armazenada na página.
Estou procurando a melhor maneira de colocar somas de verificação em pelo menos todos os dados de tabela e índice.
Minha ideia inicial seria descartar e recriar todos os índices clusterizados. Para tabelas que não possuem índice clusterizado, eu criaria um e o descartaria novamente.
Isso deve resultar em pelo menos uma operação de gravação em cada página de dados e índice, mas é um pouco pesado. Alguém tem uma ideia melhor?
A maneira mais abrangente, a meu ver, seria criptografar/descriptografar o banco de dados com TDE. Isso garantirá que cada página seja alterada na memória e seja descarregada no disco.
Eu tentei isso com sucesso em dbs 'legados' que foram originalmente criados no SQL2000, depois que descobri que várias páginas não tinham somas de verificação reais (0x...200) se você olhar o cabeçalho com a página dbcc.
Se você tentasse isso, eu recomendaria testá-lo em uma versão restaurada do banco de dados ao vivo, caso você tenha corrupção não detectada que possa ser detectada e interromper o processo de criptografia. Existem sinalizadores para lidar com isso, mas é melhor jogar pelo seguro.
Obviamente, você desejará fazer backup do certificado usado pela criptografia, para estar protegido contra qualquer eventualidade durante o tempo em que o banco de dados estiver criptografado.
Se alguém tiver uma ideia melhor para escrever somas de verificação em todas as páginas, adoraria ouvi-la :-)