Symptoms

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.

Resolution

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

Status

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

References

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

Need more help?

Want more options?

Explore subscription benefits, browse training courses, learn how to secure your device, and more.

Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.