Simptome
În mod implicit, punctele de verificare indirecte sunt activate pentru baza de date tempdb în Microsoft SQL Server 2016 și 2017. În condiții cu volum de lucru mare, poate apărea o eroare "Planificator care nu dă randament", iar DMV sys.dm_os_spinlock_stats afișează conținut de incrementare/decrementare sporit pentru tipul de incrementare/decrementare DP_LIST.
Rezolvare
Această remediere este inclusă în următoarele actualizări și pachete Service Pack:
-
Actualizarea cumulativă 5 pentru SQL Server 2016 Service Pack 1
-
Actualizarea cumulativă 8 pentru SQL Server 2016
Informații despre pachetele Service Pack pentru SQL Server 2016
Despre versiunile SQL Server
Fiecare versiune nouă pentru SQL Server conține toate remedierile rapide și remedierile de securitate care au fost în versiunea anterioară. Vă recomandăm să instalați cele mai recente actualizări cumulative pentru SQL Server:
Cea mai recentă actualizare cumulativă pentru SQL Server 2017
Pachetele Service Pack sunt cumulative. Fiecare pachet Service Pack nou conține toate remedierile din pachetele Service Pack anterioare, împreună cu orice remedieri noi. Recomandarea noastră este să aplicați cel mai recent pachet Service Pack și cea mai recentă actualizare cumulativă pentru pachetul Service Pack respectiv. Nu trebuie să instalați un pachet Service Pack anterior înainte de a instala cel mai recent pachet Service Pack. Utilizați Tabelul 1 din următorul articol pentru a găsi mai multe informații despre cel mai recent pachet Service Pack și cea mai recentă actualizare cumulativă.
Cum se determină nivelul de versiune, ediție și actualizare al SQL Server și componentele sale
Soluție de evitare
Pentru a rezolva această problemă, dezactivați punctele de verificare indirecte din baza de date tempdb utilizând una dintre următoarele instrucțiuni DDL (Data Definition Language).
Acest lucru ar trebui să se facă după cum urmează:
-
În baza de date modeldb (aceasta modifică și valoarea implicită pentru bazele de date noi), rulați următoarea instrucțiune:ALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTES
-
Sau, direct în baza de date tempdb de fiecare dată când pornește instanța, utilizând SQL Server Agent, utilizând următoarea instrucțiune:ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTES
-
Sau emiteți periodic puncte de verificare manuale pentru baza de date tempdb, utilizând următoarea instrucțiune:use tempdbgo checkpointgo
În plus, TF 3468 poate fi utilizat pentru a dezactiva punctul de control indirect pe tempdb.
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.
Referințe
Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software. Consultați articolele următoare pentru mai multe informații: