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

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

About cumulative updates for SQL Server

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.
Properties

Article ID: 3005011 - Last Review: Dec 28, 2016 - Revision: 1

Feedback