KB4341398 - 修正:AUDIT_LOGIN 和 AUDIT_LOGIN_FAILED 事件的事件通知將導致 TempDB 在 2016 SQL Server 和 2017 年異常成長

套用到
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 AUDIT_LOGINAUDIT_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 的累積更新中得到修正:

累積更新10 for SQL Server 2017

Cumulative Update 2 for SQL Server 2016 SP2

累積更新10 for SQL Server 2016 SP1

關於 SQL Server 的累積更新:

每次新的 SQL Server 累積更新都包含了之前累積更新中包含的所有熱修補與安全修補。 請查看 SQL Server 的最新累積更新:

SQL Server 2017 最新累積更新

SQL Server 2016 最新累積更新

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

參考資料

了解 Microsoft 用來說明軟體更新的術語