应用对象
SQL Server 2016 Service Pack 1 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 on Windows

症状

假设你要在 Microsoft SQL Server 2016 或2017中创建或删除大量临时表。 某些应用程序工作负荷会使临时表的缓存失效。 例如,你正在创建临时表,然后创建 ALTER TABLE 或 CREATE INDEX ,这将使 临时表的缓存无效。 在这种情况下,你可能会遇到以下问题:

  • 系统目录 sysobjvalues 上的 tempdb 中的数据定义语言(DDL)争用和大量等待 PAGELATCH_EX 的会话,PAGELATCH_SH 并 PAGELATCH_UP 等待类型发生。

  • 当条目计数超过4000时,此情况也会影响工作负荷。 但是,这可能会有所不同,具体取决于工作负荷。 请参阅以下示例:

     

    SELECT [name], [type], [entries_count], [entries_in_use_count]

    FROM sys.dm_os_memory_cache_counters

    WHERE [type] = N'CACHESTORE_TEMPTABLES'

    处理器类型

    entries_count

    entries_in_use_count

    & 表变量的临时表

    CACHESTORE_TEMPTABLES

    <计数>

    <计数>

解决方案

在 SQL Server 的以下累积更新中修复了此问题:

       SQL Server 2017 累积更新5

       SQL Server 2016 SP1 的累积更新8

SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:

SQL Server 2017 的最新累计更新

SQL Server 2016 的最新累计更新

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

参考

了解 Microsoft 用于描述软件更新的 术语

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。