KB4040276 – КОРЕКЦИЯ: Непреките контролни точки в бази данни tempdb водят до грешка "Планиране без доход" в SQL Server 2016 и 2017

Отнася се за
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)

Симптоми

По подразбиране непреките контролни точки са включени за базата данни tempdb в Microsoft SQL Server 2016 и 2017. При условия на голямо натоварване може да възникне грешка "График без отстъп" и sys.dm_os_spinlock_stats DMV показва повишена конкуренция за спинлоп за типа DP_LIST spinlock.

Решение

Тази корекция е включена в следните актуализации и сервизни пакети:

Информация за сервизни пакети за SQL Server 2016

Service Pack 2 за SQL Server 2016

За компилациите на SQL Server

Всяка нова компилация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били в предишната компилация. Препоръчваме да инсталирате най-новите сборни актуализации за SQL Server:

Последна сборна актуализация за SQL Server 2017

Най-новата компилация за SQL Server 2016

За сервизните пакети за SQL Server:

Сервизните пакети са кумулативни. Всеки нов сервизен пакет съдържа всички корекции, които са в предишните сервизни пакети, заедно с всички нови корекции. Нашата препоръка е да се приложи най-новият сервизен пакет и най-новата кумулативна актуализация за този сервизен пакет. Не е необходимо да инсталирате предишен сервизен пакет, преди да инсталирате най-новия сервизен пакет. Използвайте таблица 1 в следващата статия, за да намерите повече информация относно най-новия сервизен пакет и най-новата кумулативна актуализация.

Как да определите версията, изданието и нивото на актуализация на 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.

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.

Справки

Научете повече относно терминологията, която Microsoft използва за описване на актуализациите на софтуера. За повече информация вижте следните статии: