Operational Defect Database

BugZero found this defect 1308 days ago.

Microsoft SQL Server | 12947198

KB4497928 - FIX: Indirect checkpoints on tempdb database cause "Non-yielding scheduler" error in SQL Server 2016 and 2017 - Microsoft Support

Last update date:

6/2/2022

Affected products:

SQL Server 2016 Developer - duplicate (do not use)

SQL Server 2016 Enterprise - duplicate (do not use)

SQL Server 2016 Enterprise Core - duplicate (do not use)

SQL Server 2016 Standard - duplicate (do not use)

Affected releases:

build lower than 14.0.3223.3

Fixed releases:

14.0.3223.3

Description:

Symptoms

By default, indirect checkpoints are turned on for the tempdb database in Microsoft SQL Server 2016 and 2017. Under heavy-workload conditions, a "Non-yielding scheduler" error may occur and the sys.dm_os_spinlock_stats DMV shows elevated spinlock contention for the DP_LIST spinlock type.

Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

Resolution

This issue is fixed in the following cumulative updates for SQL Server: Cumulative Update 16 for SQL Server 2017 Cumulative Update 7 for SQL Server 2016 SP2 About cumulative updates for SQL Server: Each new cumulative update for SQL Server contains all the hotfixes and all the security fixes that were included with the previous cumulative update. Check out the latest cumulative updates for SQL Server: Latest cumulative update for SQL Server 2017 Latest cumulative update for SQL Server 2016

Workaround

To work around this issue, turn off indirect checkpoints on the tempdb database by using one of the following Data Definition Language (DDL) statements. This should be done as follows: On the modeldb database (this also changes the default value for new databases), run the following statement:ALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTES Or, directly on the tempdb database every time that the instance starts up by using the SQL Server Agent by using the following statement: ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTES Or, periodically issue manual checkpoints against the tempdb database by using the following statement:use tempdbgo checkpointgo In addition, TF 3468 can be used to disable indirect checkpoint on tempdb.

References

Learn about the terminology that Microsoft uses to describe software updates. See the following articles for more information: Indirect Checkpoint and tempdb – the good, the bad and the non-yielding scheduler KB4040276 - FIX: Indirect checkpoints on tempdb database cause "Non-yielding scheduler" error in SQL Server 2016 and 2017

Additional Resources / Links

Share:

BugZero® Risk Score

What's this?

Coming soon

Status

Unavailable

Learn More

Search:

...