Sintomas
Considere o seguinte cenário:
-
Suponha que você tenha tabelas particionadas no Microsoft SQL Server e elas façam parte do CDC (Change Data Capture) ou replicação transacional. Você alterna ou alterna a partição dessas tabelas.
-
Após a opção de partição ao executar operações DML (Linguagem de Manipulação de Dados), você pode notar que ocorre um EXCEPTION_ACCESS_VIOLATION e um arquivo de despejo de memória é gerado.
Data/Hora ***Despejo de Pilha sendo enviado para FilePath\FileName
Data/Hora SqlDumpExceptionHandler: Process ProcessID gerou exceção fatal c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server está encerrando esse processo.
Date/Time * ****
Data/Hora *
Data/Hora * BEGIN STACK DUMP:
Date/Time *
Date/Time *
Date/Time *
Date/Time *
Date/Time * Exception Address = 000007FEE724BD80 Module(sqllang+000000000015BBD80)
Date/Time * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION
Date/Time * Violação de acesso ocorreu no endereço de leitura 0000000000002A
Data/Hora * Buffer de Entrada 70 bytes
Data/Hora * sys.sp_MScdc_capture_job
Data/Hora *
Data/Hora ***Despejo de Pilha sendo enviado para FilePath\FileName
Data/Hora SqlDumpExceptionHandler: processo PID gerou exceção fatal c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server está encerrando esse processo.
Date/Time * ****
Data/hora *
Data/Hora * BEGIN STACK DUMP:
Date/Time * Date/TimeSPID
Date/Time *
Date/Time *
Date/Time * Exception Address = 00007FEE9D26640 Module(sqllang+0000000001586640)
Date/Time * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION
Data/Hora * Violação de acesso ocorreu no endereço de leitura 0000000000002A
Data/Hora * Buffer de Entrada 109 bytes -
Data/Hora * 16 00 00 00 12 00 00 00 00 02 00 00 00 00 00 00
Data/Hora Hora * s p _ r e p 01 00 00 00 0b 00 73 00 70 00 5f 00 72 00 65 00 70 00
Data/Hora * l c m d s & ô 6c 00 63 00 6d 00 64 00 73 00 00 00 00 26 04 04 f4
Data/Hora * & & ÿ 01 00 00 00 00 00 26 04 04 00 00 00 00 00 26 04 04 ff
Data/Hora * ÿÿÿÿ & ff ff 00 00 a 5 0a 00 00 00 00 00 26 04 04 8f 13 00Date/ 00
Hora * & & ¡ 00 00 00 26 04 04 00 00 00 00 00 00 26 04 04 20 a1 07
Data/Hora * 00
-
Se você executar a consulta a seguir na tabela de destino, poderá notar que o valor da coluna is_replicated será marcado como '1' para índice não clusterizado, o que não está correto.
select index_id, partition_number, * from sys.system_internals_partition_columns pc with(nolock)
JOIN sys.partitions p with(nolock)
ON p.partition_id = pc.partition_id
where p.object_id = object_id ('PartitionTable')
order by 2
Resolução
Esse problema é corrigido nas seguintes atualizações cumulativas para SQL Server:
Atualização cumulativa 1 para SQL Server 2017
Cada nova atualização cumulativa para SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as últimas atualizações cumulativas para SQL Server:
Atualização cumulativa mais recente para SQL Server 2017
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Referências
Saiba mais sobre a terminologiaque a Microsoft usa para descrever atualizações de software.