Estou tendo um problema com a replicação de uma tabela e finalmente localizei um erro de consistência na tabela de origem, mas estou perplexo quanto ao que está causando o erro de consistência.
Executei o DBCC Checkdb e encontrei o seguinte erro na tabela
Msg 2570, Level 16, State 3, Line 1 Page (1:5217772), slot 16 in object ID 1038014829, index ID 1, partition ID 349502316544000, alloc unit ID 349502316544000 (type "In-row data"). O valor da coluna "MHGPTX" está fora do intervalo para o tipo de dados "varchar". Atualize a coluna para um valor legal.
Usei DBCC PAGE para saber qual linha da tabela estava causando o problema e localizei a linha ofensiva.
Ranhura 16 Coluna 6 Deslocamento 0x28 Comprimento 150
MHGPTX = [Erro ao converter para string (comprimento 150 bytes)]
Foi aqui que fiquei preso, os dados no campo parecem bons, os dados estão bem abaixo do tamanho máximo da coluna, posso consultar a linha etc.
Encontrei algumas referências online para problemas semelhantes, onde o problema foi resolvido atualizando a linha usando os mesmos dados, então tentei isso, mas sem alteração.
Qualquer conselho seria muito apreciado
Eu tentaria isso:
Eu também verificaria o hardware (disco) em busca de inconsistências.
Já faz um tempo, mas percebi que nunca atualizei isso.
Descobri que o erro foi causado por caracteres de byte duplo (idioma asiático) e o segundo byte sendo truncado. Consegui corrigir o problema aumentando a coluna em um e, em seguida, alterando-a de volta para a largura original. Isso truncou o primeiro byte remanescente do caractere de byte duplo e checkdb agora retorna sem erro.