症状
使用 Microsoft SQL Server 2012、2014 或 2016,并使用 SQL Server 公共语言运行时 (SQL CLR) 集成来创建用户定义类型 (UDT) 。
如果将 UDT 用作存储过程参数,则参数将通过远程过程调用 (RPC) 机制传递给服务器。 此机制在内部尝试加载在内存中托管 UDT 的程序集。
在这种情况下,你可能会遇到存储过程执行性能下降的情况。 出现这种情况的原因是 RPC 在非常规情况下加载和卸载 SQLCLR 程序集时导致效率低下。
此问题表现为 CLR_AUTO_EVENT 和 CMEMTHREAD 类型的等待时间较长。 如果多个并发用户运行同一个存储过程,则尤其如此。
解决方法
SQL Server的 Service Pack 信息
以下 Service Pack 中修复了此更新,适用于SQL Server:
Service Pack 2 for SQL Server 2016
Service Pack 3 for SQL Server 2014
Service Pack 4 for SQL Server 2012
关于SQL Server的 Service Pack:
Service Pack 具有累积性。 每个新 Service Pack 除了包含所有新修复程序外,还包含以前 Service Pack 中的所有修复程序。 建议为该服务包应用最新的 Service Pack 和最新的累积更新。 在安装最新的 Service Pack 之前,不需要安装以前的 Service Pack。 使用以下文章中的表 1 查找有关最新 Service Pack 和最新累积更新的详细信息。
如何确定 SQL Server 及其组件的版本、版本类别和更新级别
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
参考资料
了解 Microsoft 用于描述软件更新的术语。