Unexpected growth of tempdb data files when using SQL Server Service Broker

Applies to: SQL Server 2016

Symptoms


You notice an unexpected growth of tempdb data files if applications that use Microsoft SQL Server Service Broker are configured to have a message pattern of one message per conversation. This pattern resembles the "fire-and-forget" pattern that is usually used in auditing applications.

If you query the sys.dm_db_task_space_usage dynamic management view (DMV) while this issue is occurring, you might see that the "internal_objects_dealloc_page_count" value does not increase at the same rate as "internal_objects_alloc_page_count" for session IDs that are running internal Service Broker tasks.

Additionally, the tempdb space is not released even after all pending conversations are closed and cleaned up.

Cause


The growth of the data files is caused mainly by constant inserts and updates to the sys.sysdesend table. In this situation, tempdb data files continue to grow as you use Service Broker.

Resolution


This issue is fixed in Microsoft SQL Server 2016.

Cumulative update information

Cumulative Update 5 for SQL Server 2012 Service Pack 3 (SP3)

Cumulative Update 10 for SQL Server 2014 SP1  

Cumulative update 3 for SQL Server 2014 SP2


More Information


To reclaim the unreleased space from tempdb, restart the SQL Server service.

To avoid this problem, follow the general recommendations in the "Performance and Scalability Techniques" section of the following TechNet topic:

Status


Microsoft confirms that this is a known issue in the current design of Service Broker.