Sintomas
Por predefinição, os pontos de verificação indiretos estão ativados para a base de dados tempdb no Microsoft SQL Server 2016 e 2017. Em condições de carga de trabalho pesada, um erro "Agendador não produtivo" pode ocorrer e o sys.dm_os_spinlock_stats DMV mostra contenção de spinlock elevada para o tipo de spinlock DP_LIST.
Estado
A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".
Resolução
Este problema foi corrigido nas seguintes atualizações cumulativas para SQL Server:
Acerca das atualizações cumulativas para SQL Server:
Cada nova atualização cumulativa para SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:
- Atualização cumulativa mais recente para o SQL Server 2017
- Atualização cumulativa mais recente para o SQL Server 2016
Solução
Para contornar este problema, desative os pontos de verificação indiretos na base de dados tempdb utilizando uma das instruções DDL (Data Definition Language) seguintes.
Isto deve ser feito da seguinte forma:
Na base de dados modeldb (isto também altera o valor predefinido para novas bases de dados), execute a seguinte instrução:
ALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTESOu, diretamente na base de dados tempdb, sempre que a instância for iniciada, utilizando o SQL Server Agent ao utilizar a seguinte instrução:
ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTESOu, periodicamente, emita pontos de verificação manuais na base de dados tempdb utilizando a seguinte instrução:
use tempdb
go checkpoint
goAlém disso, o TF 3468 pode ser usado para desativar o ponto de verificação indireto em tempdb.
Referências
Saiba mais sobre a terminologia que a Microsoft utiliza para descrever as atualizações de software. Consulte os seguintes artigos para obter mais informações: