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 "Agendador sem rendimento" e a DMV do sys.dm_os_spinlock_stats mostra contenção de spinlock elevada para o tipo DP_LIST spinlock.
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Resolução
Esse problema foi corrigido nas seguintes atualizações cumulativas para SQL Server:
Sobre 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 na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes para SQL Server:
Solução alternativa
Para contornar esse problema, desative pontos de verificação indiretos no banco de dados tempdb usando uma das instruções DDL (Linguagem de Definição de Dados) a seguir.
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 for iniciada usando o SQL Server Agent usando a seguinte instrução:
ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTES -
Ou, periodicamente, emita pontos de verificação manuais no banco de dados tempdb usando a seguinte instrução:
use tempdb#x1go
Além disso, o TF 3468 pode ser usado para desabilitar o ponto de verificação indireto no tempdb.
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever as atualizações de software. Para obter mais informações, consulte os seguintes artigos: