KB4040276 – RJEŠENJE: neizravne kontrolne točke u bazi podataka tempdb uzrokuju pogrešku "Non-yielding scheduler" u SQL Server 2016 i 2017

Primjenjuje se na
SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1 SQL Server 2017 on Windows (all editions)

Simptomi

Prema zadanim postavkama neizravne kontrolne točke uključene su za bazu podataka tempdb u sustavu Microsoft SQL Server 2016 i 2017. U uvjetima velikog radnog opterećenja može doći do pogreške "Nepopustljiv planer", a sys.dm_os_spinlock_stats DMV prikazuje pojačanu konkurenciju za spinlock za DP_LIST tip spinlocka.

Rješenje

Taj je popravak obuhvaćen sljedećim ažuriranjima i servisnim paketom:

Informacije o servisnom paketu za SQL Server 2016

Service Pack 2 za SQL Server 2016

O međuverzijama sustava SQL Server

Svaka nova međuverzija za SQL Server sadrži sve hitne popravke i sigurnosne popravke koji su bili u prethodnoj međuverziji. Preporučujemo da instalirate najnovija kumulativna ažuriranja za SQL Server:

Najnovije kumulativno ažuriranje za SQL Server 2017

najnovija međuverzija za SQL Server 2016

O servisnim paketima za SQL Server:

Servisni paketi kumulativni su. Svaki novi servisni paket sadrži sve popravke iz prethodnih servisnih paketa, zajedno sa svim novim popravcima. Preporučujemo da za taj servisni paket primijenite najnoviji servisni paket i najnovije kumulativno ažuriranje. Ne morate instalirati prethodni servisni paket da biste instalirali najnoviji. U tablici 1 sljedećeg članka potražite dodatne informacije o najnovijem servisnom paketu i najnovijem kumulativnom ažuriranju.

Kako odrediti verziju, izdanje i razinu ažuriranja SQL Server i njegovih komponenti

Zaobilazno rješenje

Da biste zaobišli taj problem, isključite neizravne kontrolne točke u bazi podataka tempdb pomoću jedne od sljedećih naredbi jezika za definiranje podataka (Data Definition Language, DDL).

To treba učiniti na sljedeći način:

  • U bazi podataka modeldb (time se mijenja i zadana vrijednost za nove baze podataka) pokrenite sljedeću naredbu:

    ALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTES

  • Ili izravno u bazu podataka tempdb svaki put kada se instanca pokrene pomoću agenta za SQL Server Agent pomoću sljedeće naredbe:

    ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTES

  • Ili povremeno izdajte ručne kontrolne točke u bazi podataka tempdb pomoću sljedeće naredbe:

    use tempdb
    go checkpoint
    go
     
    Osim toga, TF 3468 se može koristiti za onemogućivanje neizravne kontrolne točke na tempdb-u.

Status

Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku „Odnosi se na“.

Reference

Saznajte više o terminologiji koju Microsoft upotrebljava za opisivanje softverskih ažuriranja. Dodatne informacije potražite u sljedećim člancima: