KB4497928 - ИСПРАВЛЕНО: непрямые контрольные точки в базе данных tempdb приводят к ошибке "Non-yielding Scheduler" в SQL Server 2016 и 2017

Применяется к
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)

Проблема

По умолчанию косвенные контрольные точки включены для базы данных tempdb в Microsoft SQL Server 2016 и 2017. В условиях высокой рабочей нагрузки может возникнуть ошибка "Планировщик неуступчивости". В sys.dm_os_spinlock_stats DMV отображается повышенная конкуренция за спин-блокировку для типа DP_LIST Spinlock.

Состояние

Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».

Решение

Эта проблема устранена в следующих накопительных обновлениях для SQL Server:

Сведения о накопительных обновлениях для SQL Server:

Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и исправления безопасности, которые входили в состав предыдущего накопительного пакета обновления. Ознакомьтесь с последними накопительными пакетами обновления для SQL Server:

Временное решение

Чтобы обойти эту проблему, отключите косвенные контрольные точки в базе данных tempdb с помощью одного из следующих операторов языка описания данных (DDL).

Сделать это следует следующим образом:

  • В базе данных modeldb (это также меняет значение по умолчанию для новых баз данных) выполните следующую инструкцию:

    ALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTES

  • Или непосредственно в базе данных tempdb каждый раз при запуске экземпляра используйте агент SQL Server, используя следующую инструкцию:

    ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTES

  • Или периодически создавайте контрольные точки вручную для базы данных tempdb, используя следующую инструкцию:

    use tempdb
    go checkpoint
    go

    Кроме того, TF 3468 можно использовать для отключения непрямой контрольной точки в tempdb.

Ссылки

Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения. Дополнительные сведения см. в следующих статьях: