症状
在 Microsoft SQL Server中,尝试使用扩展事件 (xEvents) 和动态管理视图 (DMV) (如sys.dm_exec_requests和sys.dm_exec_query_stats)监视缓存查询计划时,很难将缓存的查询计划关联在一起。
原因
出现此问题的原因是 ,QUERY_HASH 和 Query_plan_hash 列的数据类型在 DMV 和 xEvents 之间有所不同。 Query_hash列和Query_plan_hash列在 DMV (sys.dm_exec_requests 和 sys.dm_exec_query_stats) 中定义为 Varbinary 数据类型。 在 xEvents 中,列定义为 UINT64 数据类型。
解决方法
SQL Server的 Service Pack 信息
以下 Service Pack 中修复了此更新,适用于SQL Server:
- 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 及其组件的版本、版本类别和更新级别
安装此更新后,将添加两个定义为 INT64 数据类型的附加列: Query_hash_signed 和 Query_plan_hash_signed。 这样,可以更轻松地在 DMV 和 xEvents ((例如 rpc_completed 和 sql_batch_completed) )之间联接数据。
关于SQL Server生成
SQL Server的每个新更新都包含上一个更新中包含的所有修补程序和所有安全修补程序。 查看SQL Server的最新服务包:
2012 SQL Server最新 Service Pack
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
参考资料
了解 Microsoft 用于描述软件更新的术语。