症状
假设你有一个脚本,该脚本将事件通知用于 Microsoft SQL Server 2016 和 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 的以下累积更新中修复:
关于 SQL Server 的累积更新:
SQL Server 的每个新累积更新都包含上一个累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
参考资料
了解 Microsoft 用于描述软件更新的术语。