You use Microsoft SQL Server 2012, 2014 or 2016, and you create a User-defined type (UDT) by using SQL Server common language runtime (SQL CLR) integration.

If you use the UDT as a stored procedure parameter, the parameter is passed to the server through the remote procedure call (RPC) mechanism. This mechanism internally tries to load an assembly that hosts the UDT in memory.

In this situation, you may experience decreased performance for the stored procedure execution. This occurs because of an inefficiency that's caused when the RPC loads and unloads the SQLCLR assembly unnecesarily.

This problem is manifested as long wait times for CLR_AUTO_EVENT and CMEMTHREAD types. This is especially true if multiple concurrent users are running the same stored procedure.


Service pack information for SQL Server

This update is fixed in the following service packs for SQL Server:

Service Pack 2 for SQL Server 2016

Service Pack 3 for SQL Server 2014

Service Pack 4 for SQL Server 2012

Service packs are cumulative. Each new service pack contains all the fixes that are in previous service packs, together with any new fixes. Our recommendation is to apply the latest service pack and the latest cumulative update for that service pack. You do not have to install a previous service pack before you install the latest service pack. Use Table 1 in the following article for finding more information about the latest service pack and latest cumulative update.

How to determine the version, edition and update level of SQL Server and its components


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


Learn about the terminology that Microsoft uses to describe software updates.

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

What affected your experience?

Thank you for your feedback!