Симптоми
По подразбиране непреките контролни точки са включени за базата данни tempdb в Microsoft SQL Server 2016 и 2017. При условия на голямо натоварване може да възникне грешка "График без отстъп" и sys.dm_os_spinlock_stats DMV показва повишена конкуренция за спинлоп за типа DP_LIST spinlock.
Решение
Тази корекция е включена в следните актуализации и сервизни пакети:
- Сборна актуализация 1 за SQL Server 2017
- Сборна актуализация 5 за SQL Server 2016 Service Pack 1
- Сборна актуализация 8 за SQL Server 2016
Информация за сервизни пакети за 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 използва за описване на актуализациите на софтуера. За повече информация вижте следните статии: