Microsoft 将 Microsoft SQL Server 2008 Service Pack 3 修复作为一个可下载文件进行分发。 由于修补程序是累积的,因此每个新版本都包含以前的 SQL Server 2008 Service Pack 3 修复版本附带的所有修补程序和所有安全修补程序。
症状
假设你在 sql server 2008 中的 sql server 2008 R2 或 SQL Server 2012 中运行在查询执行计划中使用并行度的查询。 查询计划满足以下条件:
-
查询执行计划包含位图运算符以及哈希联接或合并联接。
-
哈希联接或合并联接谓词包含对可以为NULL 的列的比较。
在这种情况下,查询将返回不正确的结果。
原因
出现此问题的原因是当 SQL Server 在表扫描或索引扫描中使用位图筛选时,将丢弃 NULL 值。
解决方案
累积更新信息
SQL Server 2012 Service Pack 1 的累积更新包1
此问题的修补程序首次在累积更新1中发布。有关如何获取此累积更新包的 SQL Server 2012 Service Pack 1 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2765331 SQL Server 2012 Service Pack 1 的累积更新包1注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2012 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2772858 在发布 SQL Server 2012 Service Pack 1 之后发布的 SQL Server 2012 版本
SQL Server 2008 R2 Service Pack 2
此问题的修补程序首次在 SQL Server 2008 R2 Service Pack 2 的累积更新2中发布。有关如何获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2740411 SQL Server 2008 R2 Service Pack 2 的累积更新包2注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 修补程序版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2730301 发布 SQL Server 2008 R2 Service Pack 2 后发布的 SQL Server 2008 R2 版本
SQL Server 2008 R2 Service Pack 1
此问题的修补程序首次发布,即累积更新8。有关如何为 SQL Server 2008 R2 Service Pack 1 获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2723743 SQL Server 2008 R2 SP1 的累积更新程序包8注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 Service Pack 1 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2567616 发布 SQL Server 2008 R2 SP1 后发布的 SQL Server 2008 R2 版本
SQL Server 2012
此问题的修补程序首次在 SQL Server 2012 的累积更新3中发布。有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2723749 SQL Server 2012 累积更新包3注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2012 修复版本附带的所有修补程序和所有安全修补程序。 Microsoft 建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2692828 在 SQL Server 2012 发布后发布的 SQL Server 2012 版本 必须将 SQL Server 2012 修补程序应用到 SQL Server 2012 的安装。
SQL Server 2008 Service Pack 3
此问题的修补程序首次发布于 SQL Server 2008 的累积更新6(Service Pack 3)。有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2715953 SQL Server 2008 的累积更新包 6 Service Pack 3注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2629969 发布 SQL server 2008 Service Pack 3 后发布的 SQL Server 2008 版本 为特定 SQL Server service pack 创建 Microsoft SQL Server 2008 修补程序。 必须将 SQL Server 2008 Service Pack 3 修补程序应用到 SQL Server 2008 Service Pack 3 的安装。 默认情况下,SQL Server service pack 中提供的任何修补程序都包含在下一个 SQL Server service pack 中。
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
解决方法
若要解决此问题,请通过应用以下方法之一避免在查询中使用并行:
-
添加 MAXDOP 1 查询提示选项。
-
将 " 最大并行度 " 选项设置为 1。
更多信息
有关并行散列连接的详细信息,请转到以下 MSDN 博客网站:
有关并行哈希联接的常规信息有关查询执行位图筛选器的详细信息,请转到以下 MSDN 博客网站: