Sintomi
Per impostazione predefinita, i checkpoint indiretti sono attivati per il database tempdb in Microsoft SQL Server 2016 e 2017. In condizioni di carico di lavoro elevato, potrebbe verificarsi un errore "Scheduler non cedevole" e la sys.dm_os_spinlock_stats DMV mostra una contesa di spinlock elevata per il tipo di spinlock DP_LIST.
Stato
Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".
Risoluzione
Questo problema è stato risolto negli aggiornamenti cumulativi seguenti per SQL Server:
Informazioni sugli aggiornamenti cumulativi per SQL Server:
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutte le correzioni rapide e di sicurezza incluse nell'aggiornamento cumulativo precedente. Vedere gli aggiornamenti cumulativi più recenti per SQL Server:
- Aggiornamento cumulativo più recente per SQL Server 2017
- Aggiornamento cumulativo più recente per SQL Server 2016
Soluzione alternativa
Per risolvere questo problema, disattivare i checkpoint indiretti nel database tempdb usando una delle istruzioni DDL (Data Definition Language) seguenti.
Questa operazione deve essere eseguita nel modo seguente:
Nel database modeldb (questo cambia anche il valore predefinito per i nuovi database), eseguire l'istruzione seguente:
ALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTESIn alternativa, direttamente nel database tempdb ogni volta che l'istanza viene avviata utilizzando SQL Server Agent tramite l'istruzione seguente:
ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTESIn alternativa, eseguire periodicamente checkpoint manuali sul database tempdb usando l'istruzione seguente:
use tempdb
go checkpoint
goInoltre, TF 3468 può essere utilizzato per disabilitare il checkpoint indiretto su tempdb.
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software. Per altre informazioni, vedere gli articoli seguenti: