Sintomas
Por padrão, os pontos de verificação indiretos são ativados para o banco de dados tempdb no Microsoft SQL Server 2016 e 2017. Em condições de carga de trabalho pesada, pode ocorrer um erro de "agendador não produtivo" e o sys.dm_os_spinlock_stats DMV mostra a contenção de spinlock elevada para o tipo de spinlock DP_LIST.
Resolução
Essa correção está incluída nas seguintes atualizações e no service pack:
-
Atualização cumulativa 5 para SQL Server Service Pack 1 de 2016
-
Atualização cumulativa 8 para SQL Server 2016
Informações do service pack para SQL Server 2016
Cerca de SQL Server builds
Cada novo build para SQL Server contém todos os hotfixes e correções de segurança que estavam no build anterior. Recomendamos instalar as atualizações cumulativas mais recentes para SQL Server:
Os pacotes de serviço são cumulativos. Cada novo service pack contém todas as correções que estão em pacotes de serviço anteriores, juntamente com quaisquer novas correções. Nossa recomendação é aplicar o pacote de serviços mais recente e a atualização cumulativa mais recente para esse service pack. Você não precisa instalar um service pack anterior antes de instalar o pacote de serviços mais recente. Use a Tabela 1 no artigo a seguir para encontrar mais informações sobre o pacote de serviços mais recente e a atualização cumulativa mais recente.
Como determinar o nível de versão, edição e atualização de SQL Server e seus componentes
Solução alternativa
Para resolver esse problema, desative pontos de verificação indiretos no banco de dados tempdb usando uma das seguintes instruções DDL (Linguagem de Definição de Dados).
Isso deve ser feito da seguinte maneira:
-
No banco de dados modeldb (isso também altera o valor padrão para novos bancos de dados), execute a seguinte instrução:
ALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTES -
Ou, diretamente no banco de dados tempdb sempre que a instância é iniciada usando o SQL Server Agent usando a seguinte instrução:
ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTES -
Ou, emita pontos de verificação manuais periodicamente no banco de dados tempdb usando a seguinte instrução:
use tempdb
go checkpoint
go
Além disso, o TF 3468 pode ser usado para desabilitar o ponto de verificação indireto no tempdb.
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software. Para obter mais informações, consulte os seguintes artigos: