KB3005011 - 使用 SQL Server Service Broker 時,tempdb 資料檔案意外成長

Applies To
SQL Server 2016

症狀

如果使用 Microsoft SQL Server Service Broker 的應用程式設定為每個交談有一則訊息的訊息模式,您就會注意到 tempdb 資料檔案意外地成長。 這種模式類似於稽核應用程式中常用的「觸發即忘記」模式。

如果您在此問題發生時查詢sys.dm_db_task_space_usage動態管理檢視 (DMV) ,您可能會看到執行內部 Service Broker 工作之工作階段識別碼的 “internal_objects_dealloc_page_count” 值不會以與 “internal_objects_alloc_page_count” 相同的速率增加。

此外,即使關閉並清除所有擱置中的交談,tempdb 空間也不會被釋放。

原因

資料檔案的成長主要是由 sys.sysdesend 資料表的不斷插入和更新所導致。 在此情況下,tempdb 資料檔會隨著您使用 Service Broker 而持續增大。

解決方式

此問題已在 Microsoft SQL Server 2016 中修正。

累積更新資訊

SQL Server 2012 Service Pack 3 (SP3 的累積更新 5)
            
             SQL Server 2014 SP1 的累積更新 10 

SQL Server 2014 SP2 的累積更新 3

關於 SQL Server 的累積更新

SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:

適用於 SQL Server 2012 SP3 的最新累積更新

適用於 SQL Server 2014 SP1/SP2 的最新累積更新

      

更多資訊

若要從 tempdb 回收未釋放的空間,請重新啟動 SQL Server 服務。

若要避免此問題,請遵循下列 TechNet 主題中「效能和延展性技術」一節中的一般建議:

Service Broker:效能與延展性技術

狀態

Microsoft 確認這是 Service Broker 目前設計中的已知問題。