KB4040276 — poprawka: w SQL Server 2016 i 2017 r. pośrednie punkty kontrolne w bazie danych tempdb powodują błąd "Harmonogram nieplonowania"

Dotyczy
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)

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:

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 MINUTES

  • Lub 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 MINUTES

  • Moż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: