Sintomas
Por predefinição, os pontos de verificação indiretos estão ativos para a base de dados temporária nas versões Microsoft SQL Server 2016 e 2017. Em condições de carga de trabalho pesados, pode ocorrer um erro "Programador de não produção" e o DMV sys.dm_os_spinlock_stats apresenta um nível de conversão elevado no DP_LIST de controlo giratório.
Estado
A Microsoft confirmou que este problema ocorre nos produtos da 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 o SQL Server contém todas as correções de segurança incluídas na atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:
Solução
Para resolver este problema, deslige pontos de verificação indiretos na base de dados tempdb ao utilizar uma das seguintes instruções DDL (Data Definition Language).
Isto deve ser feito da seguinte forma:
-
Na base de dados de modelação (isto também altera o valor predefinido para novas bases de dados), execute a seguinte declaração:
ALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTES -
Em outro caso, pode utilizar diretamente a base de dados tempdb sempre que a instância é iniciada utilizando a SQL Server Agent com a seguinte declaração:
ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTES -
Também pode emitir pontos de verificação manuais periodicamente na base de dados tempdb ao utilizar a seguinte declaração:
use tempdb#x1go
Além disso, a TF 3468 pode ser utilizada para desativar a verificação indireta na tempdb.
Referências
Saiba mais sobre a terminologia que a Microsoft utiliza para descrever atualizações de software. Consulte os seguintes artigos para obter mais informações: