FIX: Sort operator spills to tempdb in SQL Server 2012 or SQL Server 2014 when estimated number of rows and row size are correct

Applies to: SQL Server 2012 EnterpriseSQL Server 2012 DeveloperSQL Server 2012 Standard More

Symptoms


Assume that you execute a query that uses a sort operator. In rare conditions, the sort operator may start spilling into tempdb, even if the estimated number of rows and average row size are accurate, and the system has sufficient memory. This leads to slow query execution.

Resolution


The issue was first fixed in the following cumulative update of SQL Server:


Note After applying this hotfix, enable trace flag 7470 to make SQL Server consider internal data management memory overhead when calculating required memory for sort. This will avoid spills in the situation explained in the Symptoms section above. Note that this will increase memory requirement for sort queries and may impact memory availability for concurrent queries, therefore it is recommended to use the trace flag selectively.

Status


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.