Objawy
Domyślnie pośrednie punkty kontrolne są włączone dla bazy danych tempdb w programie Microsoft SQL Server 2016 i 2017. W warunkach dużego obciążenia może wystąpić błąd "Harmonogram nieuzyskujący", a sys.dm_os_spinlock_stats DMV wykazuje podwyższoną rywalizację o spinlock dla DP_LIST typu spinlocka.
Rozwiązanie
Ta poprawka jest uwzględniona w następujących aktualizacjach i dodatku Service Pack:
- Aktualizacja zbiorcza 1 dla programu SQL Server 2017
- Aktualizacja zbiorcza 5 dla programu SQL Server 2016 z dodatkiem Service Pack 1
- Aktualizacja zbiorcza 8 dla programu SQL Server 2016
Informacje o dodatku Service Pack dla programu SQL Server 2016
Service Pack 2 dla programu SQL Server 2016
Informacje o kompilacjach programu SQL Server
Każda nowa kompilacja programu SQL Server zawiera wszystkie poprawki zabezpieczeń z poprzedniej kompilacji. Zalecamy zainstalowanie najnowszych aktualizacji zbiorczych dla programu SQL Server:
Najnowsza aktualizacja zbiorcza dla programu SQL Server 2017
najnowsza kompilacja dla programu SQL Server 2016
Informacje o dodatkach Service Pack dla programu SQL Server:
Dodatki Service Pack są kumulatywne. Każdy nowy dodatek Service Pack zawiera wszystkie poprawki zawarte w poprzednich dodatkach Service Pack oraz nowe poprawki. Zalecamy stosowanie najnowszego dodatku Service Pack i najnowszej aktualizacji zbiorczej dla danego dodatku Service Pack. Instalowanie poprzedniego dodatku Service Pack przed zainstalowaniem najnowszego dodatku Service Pack nie jest konieczne. Więcej informacji na temat najnowszego dodatku Service Pack i najnowszej aktualizacji zbiorczej znajdziesz w tabeli 1 w następującym artykule.
Jak określić wersję, wersję i poziom aktualizacji programu SQL Server i jego składników
Obejście
Aby obejść ten problem, wyłącz pośrednie punkty kontrolne w bazie danych tempdb, używając jednej z poniższych instrukcji języka DDL (Data Definition Language).
Należy to zrobić w następujący sposób:
W bazie danych modeldb (spowoduje to również zmianę wartości domyślnej dla nowych baz danych) uruchom następującą instrukcję:
ALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTESLub bezpośrednio w bazie danych tempdb przy każdym uruchomieniu wystąpienia przy użyciu agenta programu SQL Server przy użyciu następującej instrukcji:
ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTESMożna też okresowo wystawiać ręczne punkty kontrolne względem bazy danych tempdb, stosując następującą instrukcję:
use tempdb
go checkpoint
go
Ponadto można użyć serwera TF 3468 do wyłączenia pośredniego punktu kontrolnego w bazie danych tempdb.
Stan
Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.
Źródła informacji
Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania. Aby uzyskać więcej informacji, zobacz następujące artykuły: