KB4016867 - 修复:xEvents 中 Query_hash 和 Query_hash_plan 列的数据类型与 DMV sys.dm_exec_requests 和 sys.dm_exec_query_stats 中的数据类型不匹配

应用对象
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Enterprise Core SQL Server 2012 Standard

症状

在 Microsoft SQL Server中,尝试使用扩展事件 (xEvents) 和 DMV) (动态管理视图(如 sys.dm_exec_requests 和 sys.dm_exec_query_stats)监视缓存的查询计划时,很难将缓存的查询计划关联在一起。

原因

出现此问题的原因是 DMV 和 xEvent 之间的 Query_hash 和 Query_plan_hash 列的数据类型不同。 Query_hash 和 Query_plan_hash 列在 DMV (sys.dm_exec_requests 和 sys.dm_exec_query_stats) 中定义为 Varbinary 数据类型。 在 xEvents 中,列定义为 UINT64 数据类型。

解决方法

SQL Server 的 Service Pack 信息

此更新已在 SQL Server 的以下 Service Pack 中修复:

关于 SQL Server 的 Service Pack:

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 的最新 Service Pack:

SQL Server 2014 内部版本

SQL Server 2012 的最新 Service Pack

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

参考资料

了解 Microsoft 用于描述软件更新的术语。