症狀
假設您有一個指令碼,該指令碼針對 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 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。
參考資料
了解 Microsoft 用來說明軟體更新的術語。