Estamos utilizando a solução da Hallengren para a manutenção do banco de dados.
A manutenção do Hallengren que usamos é o SQL Server Index and Statistics Maintenance . Índice ccOtimizar
Ultimamente, estamos recebendo o seguinte erro em uma tabela específica:
não foi possível continuar a varredura com NOLOCK devido à movimentação de dados
DBCC CHECKDB returns no errors.
O erro é encontrado quando executamos manualmente o procedimento (agendamos um trabalho para fazer isso, mas como não conseguimos ver o erro, executamos manualmente para ver o que acontece).
Encontramos a tabela em que o problema ocorre.
Existe alguma idéia de como proceder com a resolução da declaração acima?
Portanto, pelo que entendi, o erro vem da execução do IndexOptimize.
Acredito que você consiga na tabela CommandLog encontrar exatamente qual comando SQL que causou o erro. Para isso, IMO, para fazer sentido, deveria ser um SELECT usando NOLOCK. Se você tiver outras operações modificando dados, enquanto este SELECT é executado, então sim, você pode obter este erro.
Se o erro de fato vier do seu aplicativo, você deve considerar isso.
Em qualquer caso, as opções para lidar com isso incluem não usar NOLOCK, ignorar o erro, usar simultaneidade otimista em vez de pessimista (por exemplo, definir read_committed_snapshot para o banco de dados), examinar índices (adicionar/remover índices pode melhorar as coisas), ... O que é melhor para você, não podemos dizer, é baseado em suas circunstâncias.