FIX: 错误结果与联接的列转换为二进制

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 282243
本文已归档。它按“原样”提供,并且不再更新。
BUG #: 351225 (SHILOH_bugs)
错误 #: 100900 (sqlbug_70)
症状
当您使用一个区分大小写的排序规则,如果相关子查询或已转换为 二进制varbinary 的基于字符的列上执行联接并如果优化器选择一个计划,使用带有缓存的表的后台打印或 $ 哈希匹配项,可能会返回不正确的结果。返回的行是基于列的区分大小写比较,而不是二进制比较该匹配项。
原因
区分大小写的服务器上从表后台打印或 $ 哈希高速缓存查找执行而不是一个二进制的查找的区分大小写的方式。由于列被强制转换为 二进制 类型,应执行二进制查阅。
解决方案

SQL Server 2000

若要解决此问题,获得最新的 service pack,对于 Microsoft SQL Server 2000。有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
290211INF: 如何获取最新的 SQL Server 2000 Service Pack

SQL Server 7.0

若要解决此问题,获得最新的 service pack,对于 Microsoft SQL Server 7.0。有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
301511INF: 如何获取最新的 SQL Server 7.0 服务包
: Microsoft SQL Server 7.0 Service Pack 4 之前创建的以下修补程序。

此修复程序的英文版应具有以下文件属性或更高版本:
   Version      File name      Platform   ----------------------------------------------------   7.00.0919    s70919i.exe    x86        SP2-based fix   7.00.0919    s70919a.exe    Alpha      SP2-based fix   7.00.0970    s70970i.exe    x86        SP3-based fix   7.00.0970    s70970a.exe    Alpha      SP3-based fix				
: 由于文件相关性的最新的修补程序或功能,它包含上述文件可能还包含其他文件。

状态
Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中的问题。

SQL Server 2000
此问题 SQL Server 2000 Service Pack 1 中第一次已得到纠正。

SQL Server 7.0
Microsoft SQL Server 7.0 Service Pack 4 中,第一次已得到纠正此问题。
更多信息
以下脚本演示此问题。应用此修补程序之前,该脚本返回具有一个 TestCode,a 的两个行,而不是一行值和 a 和第二个值 A。
CREATE TABLE #tblIDs(TestID int, Code varchar(1))CREATE TABLE #tblValues(Code varchar(1))INSERT INTO #tblIDs(TestID, Code) VALUES(1,'a')INSERT INTO #tblIDs(TestID, Code) VALUES(2,'A')INSERT INTO #tblValues(Code) VALUES('a')INSERT INTO #tblValues(Code) VALUES('A')SELECT #tblValues.Code AS TestCode,    (SELECT #tblIDs.TestID FROM #tblIDs       WHERE CAST(#tblIDs.Code AS varbinary) =             CAST(#tblValues.Code AS varbinary)    ) AS TestID FROM #tblValuesDROP TABLE #tblIDsDROP TABLE #tblValuesGO				
排序顺序转换转换

警告:本文已自动翻译

属性

文章 ID:282243 - 上次审阅时间:01/16/2015 21:19:29 - 修订版本: 3.1

Microsoft SQL Server 7.0 标准版, Microsoft SQL Server 2000 标准版

  • kbnosurvey kbarchive kbmt kbbug kbfix kbsqlserv2000sp1fix KB282243 KbMtzh
反馈