KB4341398 - 修复:AUDIT_LOGIN和AUDIT_LOGIN_FAILED事件的事件通知将导致 2016 年和 2017 SQL Server TempDB 异常增长

应用对象
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 2016 Service Pack 1 SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

症状

假设你有一个脚本,该脚本对 2016 年和 2017 Microsoft SQL Server 和 2017 中的AUDIT_LOGIN和AUDIT_LOGIN_FAILED事件使用事件通知。 运行脚本时,你会注意到 TempDB 的大小迅速增长。

如果正确解除分配了分配给 TempDB 内部对象的空间,则可以使用以下查询检查。


SELECT *
FROM (
SELECT  TS.internal_objects_alloc_page_count , TS.internal_objects_dealloc_page_count, [Net Allocation MB] = CAST((TS.internal_objects_alloc_page_count - TS.internal_objects_dealloc_page_count) AS DECIMAL(15, 2)) / 128
  , TS.session_id
  , ER.command
FROM    sys.dm_db_task_space_usage TS
   INNER JOIN sys.dm_exec_requests ER ON ER.request_id = TS.request_id AND ER.session_id = TS.session_id
where TS.session_id < 50
) internal
where [Net Allocation MB] != 0

原因

出现此问题的原因是,SQL Server 2016 Service Pack 1 的累积更新 6 中的回归。

解决方法

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

2017 SQL Server累积更新 10

SQL Server 2016 SP2 的累积更新 2

SQL Server 2016 SP1 的累积更新 10

关于SQL Server的累积更新:

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

SQL Server 2017 的最新累计更新

SQL Server 2016 年的最新累积更新

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

参考资料

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