KB4040276-修正程式: tempdb 資料庫上的間接檢查點會導致 SQL Server 2016 和2017中出現「未產生排程」錯誤

徵狀

根據預設,會針對 Microsoft SQL Server 2016 和2017中的 tempdb 資料庫開啟間接檢查點。 在負載較高的情況下,可能會發生「未產生排程」錯誤,而 sys.dm_os_spinlock_stats DMV 會顯示 DP_LIST spinlock 類型的提升 spinlock 爭用。

解決方案

此修正套裝程式含在下列更新與 service pack 中:

SQL Server 2016 的 Service pack 資訊

       SQL Server 2016 Service Pack 2

關於 SQL Server 組建

每個新組建的 SQL Server 都包含先前組建中的所有修復程式和安全性修正程式。 我們建議您安裝 SQL Server 的最新累計更新:

SQL Server 2017 的最新累計更新

SQL Server 2016 的最新組建

Service pack 是累加的。 每個新的 service pack 都包含舊版 service pack 中的所有修正程式,以及任何新的修正程式。 我們建議您將最新的 service pack 和該 service pack 的最新累計更新套用。 在安裝最新的 service pack 之前,您不需要安裝舊版 service pack。 使用下列文章中的表格1,尋找最新 service pack 和最新累計更新的詳細資訊。

如何判斷 SQL Server 及其元件的版本、版本與更新層級

因應措施

若要解決此問題,請使用下列其中一種資料定義語言 (DDL) 語句,以關閉 tempdb 資料庫上的間接檢查點。

應如下所示完成:

  • 在 modeldb 資料庫上 (這也會變更新資料庫) 的預設值,請執行下列語句:

    ALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTES

  • 或者,在每次實例使用 SQL Server 代理程式使用下列語句啟動時,直接在 tempdb 資料庫上:

    ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTES

  • 或者,使用下列語句定期向 tempdb 資料庫發出手動檢查點:

    use tempdb
    go checkpoint
    go
     

    此外, TF 3468可以用來停用 tempdb 上的間接檢查點。

狀態

Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。

參考

瞭解 Microsoft 用於描述軟體更新的 術語 。 如需詳細資訊,請參閱下列文章:

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×