Sintomas
Suponha que ativa a funcionalidade Captura de Dados Alterados (CDC) numa tabela para executar uma análise de registos no Microsoft SQL Server. O parâmetro pollinginterval é convertido de segundos (s) em horas (h) no procedimento armazenado sys.sp_cdc_scan . No entanto, quando o parâmetro pollinginterval é superior a uma hora (>3600 s), repara que o resultado convertido está incorreto.
declare @pollinginterval bigint, @seconds bigint, @minutes bigint, @hours bigint
definir @pollinginterval = 3600
selecione @seconds = @pollinginterval % 60
selecione @minutes = ((@pollinginterval - @seconds) / 60) % 60
selecione @hours = (@pollinginterval - (@minutes * 60) - @seconds) / 60
--- seguinte tentativa abaixo da linha
--- selecione @hours = (@pollinginterval - (@minutes * 60) - @seconds) / 60 /60
selecionar @hours, @minutes, @seconds
Resolução
Este problema foi corrigido nas seguintes atualizações cumulativas para SQL Server:
Atualização Cumulativa 12 para SQL Server 2017
Atualização Cumulativa 3 para SQL Server 2016 SP2
Atualização Cumulativa 12 para SQL Server 2016 SP1
Cada nova atualização cumulativa para SQL Server contém todas as correções e todas as correções de segurança incluídas na atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:
Atualização cumulativa mais recente do SQL Server 2017
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Referências
Saiba mais sobre a terminologiaque a Microsoft utiliza para descrever as atualizações de software.