症状
请考虑以下情形:
-
运行更改索引...联机Microsoft SQL Server 2012年或 SQL Server 2014年中的查询。
-
由于死锁或用户启动的操作,如运行 kill 命令或取消查询,此查询将中止。
在这种情况下,必须使用索引元数据的任何 DML 操作被阻止或需要很长时间才能完成。
此外,您可能会遇到下列症状︰-
高的值为PWAIT_MD_RELATION_CACHE或MD_LAZYCACHE_RWLOCK查询sys.dm_os_wait_stats和sys.dm_exec_requests动态管理视图 (DMV) 时等待类型
-
SOS_RW 的高的值查询sys.dm_os_spinlock_stats DMV 时等待类型
为每个新的 DML 查询慢慢地清除同步对象时,会发生锁保护通常出现此问题。等待的同步对象的性质,由于 CPU 使用率是通常有限。
解决方案
累积更新信息
第一次修复该问题的SQL Server累积更新包
对于 SQL Server 2014年的累积更新 1/en-us/help/2931693
SQL Server 2012 sp1 的累积更新 9/en-us/help/2931078
SQL Server 的每个新累积更新包含以前的累积更新所包含的所有修补程序和所有安全修补程序。查看 SQL Server 的最新累积更新:
修补程序信息
可以从 Microsoft 获得受支持的修复程序。然而,此修补程序仅用于解决本文中描述的问题。仅对出现这一特定问题的系统应用此修补程序。 如果此修复程序可供下载,则在此知识库文章顶部"提供修补程序下载"部分。如果未显示此部分,将申请提交到 Microsoft 客户服务和支持,以获取此修复程序。 注意:如果发生其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。通常的支持费用将适用于其他支持问题和不计入该特定修补程序的问题。有关 Microsoft 客户服务和支持电话号码或创建单独的服务请求的完整列表,请访问下面的 Microsoft 网站︰http://support.microsoft.com/contactus/?ws=support注意:"修补程序下载可用"窗体显示获取此修复程序的语言。如果看不到您的语言,则修补程序没有那种语言的版本。 重要:应用此修补程序,改变索引后...联机查询可以中止而不降低性能的 SQL Server。
解决方法
要变通解决此问题,您可以刷新元数据条目,以防止锁保护和潜在的重新编译周期,减小查询的性能。若要执行此操作,使用下列方法之一来帮助刷新元数据条目︰
-
重新启动 SQL Server 2012年或 SQL Server 2014年的实例。
-
置于离线状态,有问题的数据库,然后将它联机。
状态
Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。