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, può verificarsi un errore "Utilità di pianificazione non yielding" e il sys.dm_os_spinlock_stats DMV mostra una contesa di spinlock elevata per il tipo di spinlock DP_LIST.
Risoluzione
Questa correzione è inclusa nei seguenti aggiornamenti e Service Pack:
-
Aggiornamento cumulativo 5 per SQL Server 2016 Service Pack 1
-
Aggiornamento cumulativo 8 per SQL Server 2016
Informazioni sui Service Pack per SQL Server 2016
Informazioni sulle build SQL Server
Ogni nuova build per SQL Server contiene tutti gli aggiornamenti rapidi e le correzioni per la sicurezza inclusi nella build precedente. È consigliabile installare gli aggiornamenti cumulativi più recenti per SQL Server:
I Service Pack sono cumulativi. Ogni nuovo Service Pack contiene tutte le correzioni incluse nei Service Pack precedenti, insieme a eventuali nuove correzioni. È consigliabile applicare il Service Pack più recente e l'aggiornamento cumulativo più recente per tale Service Pack. Non è necessario installare un Service Pack precedente prima di installare il Service Pack più recente. Usare la tabella 1 nell'articolo seguente per trovare altre informazioni sull'ultimo Service Pack e sull'aggiornamento cumulativo più recente.
Soluzione alternativa
Per risolvere questo problema, disattivare i punti di controllo indiretti nel database tempdb usando una delle istruzioni DDL (Data Definition Language) seguenti.
Questa operazione dovrebbe essere eseguita nel modo seguente:
-
Nel database modeldb (anche questo cambia il valore predefinito per i nuovi database), eseguire l'istruzione seguente:ALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTES
-
In alternativa, direttamente nel database tempdb ogni volta che l'istanza viene avviata utilizzando il SQL Server Agent utilizzando l'istruzione seguente:ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTES
-
In alternativa, creare periodicamente controlli manuali per il database tempdb usando l'istruzione seguente:use tempdbgo checkpointgo
Inoltre, TF 3468 può essere utilizzato per disabilitare checkpoint indiretto su tempdb.
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software. Per ulteriori informazioni, vedere gli articoli indicati di seguito: