FIX: 当您通过 SQL Server 2008 中使用 ORDER BY 子句的视图查询时,仍返回结果按随机顺序

文章翻译 文章翻译
文章编号: 926292 - 查看本文应用于的产品

SQL Server 2008 年

Microsoft 分布 Microsoft SQL Server 2008 修复程序作为一个可下载的文件。因为该修补程序是累积性的因此每个新版本包含的所有修补程序和所有安全修复程序以前 SQL Server 2008 中包含的修补都程序版本。

SQL Server 2005 年

Microsoft 将 Microsoft SQL Server 2005 修补程序分发作为一个可下载的文件。因为该修补程序是累积性的因此每个新版本包含的所有修补程序和所有安全修补程序附带以前 SQL Server 2005 修补都程序版本。
生成 SQL 发布之后发布的主列表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
957826您可以在其中找到有关 SQL Server 2008 的详细信息生成 SQL Server 2008 以后发布并 SQL Server 2005 生成 SQL Server 2005 Service Pack 2 以后发布
展开全部 | 关闭全部

本文内容

本文介绍以下有关此修补程序版本:
  • 通过此修补程序包修复的问题
  • 应用此修补程序包的先决条件
  • 在应用此修补程序包后是否必须重新启动计算机
  • 此修补程序包是否替换任何其他修补程序包
  • 是否必须应用此修补程序包后进行任何注册表的更改
  • 修补程序包中包含的文件

症状

在 SQL Server 2005 或 SQL Server 2008 中的数据库中有一个视图。在视图的定义,SELECT 语句满足以下要求:
  • SELECT 语句使用 TOP (100) PERCENT 表达式。
  • SELECT 语句使用 ORDER BY 子句。
当您通过视图查询时,按随机顺序返回结果。

但是,此行为是在 Microsoft SQL Server 2000 中不同的。在 SQL Server 2000 在 ORDER BY 子句中指定的顺序返回结果。

SQL Server 2008 年

累积更新 1 中第一次释放此问题的修复程序。有关如何获取 SQL Server 2008 年此累积更新包的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
956717累积更新包 1 SQL Server 2008 年
注意因为这些版本是累积性的因此每个新的修补程序版本包含的所有修补程序和所有安全修复程序以前 SQL Server 2008 中包含的修补都程序版本。我们建议您考虑应用最新的修补程序版本包含此修补程序。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
956909SQL Server 2008 生成 SQL Server 2008 发布之后发布的

SQL Server 2005 年

此修补程序的两个版本存在。要应用于发行版 SQL Server 2005 的设计一个版本。其他版本的目的被为了将应用于 SQL Server 2005 Service Pack 2 (SP2)。如果您正在发行版的 SQL Server 2005,应用 (生成 1554年) 这篇文章中描述的修补程序。如果运行的 SQL Server 2005 SP2 应用累积更新包 2 SQL Server 2005 sp2 (生成 3175)。如果运行的 SQL Server 2005 Service Pack 1 (SP1) 安装 SQL Server 2005 SP2,然后再应用累积更新包 2 SQL Server 2005 sp2 (生成 3175)。累积更新包 2 SQL Server 2005 SP2 (生成 3175) 的 Microsoft 知识库文章 936305 所述。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
936305对于 SQL Server 2005 Service Pack 2 的累积更新包 2 不可用

修补程序信息

可以从 Microsoft 获得支持的修补程序。但是,此修补程序被用于解决本文所述的此问题。此修补程序仅应用于出现这一特定问题的系统。

是否可供下载此修补程序没有"提供修补程序下载"部分中,在这篇知识库文章的顶部。如果未出现本部分,将申请提交到 Microsoft 客户服务和支持以获取此修复程序。

注意如果出现其他问题,或者如果需要进行任何故障诊断,则您可能不得不创建单独的服务请求。将正常收取支持费用将应用于其他支持问题和不需要进行此特定的修补程序的问题。有关完整列表的 Microsoft 客户服务和支持的电话号码,或创建一个单独的服务请求,请访问下面的 Microsoft 网站:
http://support.microsoft.com/contactus/?ws=support
注意"提供修补程序下载"窗体所显示的此修复程序是可用的语言。如果您看不到您的语言,则是一个修复程序不能用于该语言。

系统必备组件

您必须已安装了 SQL Server 2005 来应用此修补程序的发行版本。

重新启动信息

应用此修补程序后,您必须重新启动 SQL Server 服务。

注册表信息

您不必在应用此修补程序后更改注册表。

应用此修补程序后的操作

此修补程序引入了跟踪标志 168。应用此修补程序后,您必须启用跟踪标记 168。有关如何启用 SQL Server 2005 中的跟踪标志,请参阅"注释"部分中的下面的 Microsoft 开发人员网络 (MSDN) 的网站:
http://msdn2.microsoft.com/en-us/library/ms188396.aspx
此外,必须更改数据库包含视图中的,以便在 80 兼容的级别。

若要将兼容级别,请按照下列步骤操作:
  1. 打开 SQL Server 管理 Studio,然后连接到 SQL Server 2005 实例。
  2. 用鼠标右键单击该数据库,包含在视图,然后单击 属性
  3. 选择页 窗格中单击 选项
  4. 兼容性等级 列表中选择 SQL Server 2000 (80)
注意数据库迁移到 SQL Server 2005 之前,必须设置跟踪标志 168。如果数据库迁移后,设置了跟踪标志 168,查询结果将保持未排序。

修补程序文件信息

此修补程序仅包含那些文件解决本文列出了该问题所必需的。此修补程序不能包含将产品完全更新到最新版本所必需的所有文件。

此修补程序的英文版具有的文件属性 (或更新的文件属性) 在下表中列出。日期和时间对这些文件列出在协调世界时 (UTC)。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的 日期和时间 项中的 时区 选项卡。
收起该表格展开该表格
文件的名称文件版本文件大小日期时间平台
Logread.exe2005.90.1554.0397,0882006 年十月 4 日16: 06x86
Microsoft.sqlserver.replication.dll2005.90.1554.01,608,4802006 年十月 4 日16: 06x86
Microsoft.sqlserver.smo.dll9.0.1554.01,559,3282006 年十月 4 日16: 06x86
Microsoft.sqlserver.sqlenum.dll9.0.1554.0895,7762006 年十月 4 日16: 06x86
Msmdlocal.dll9.0.1554.015,626,5282006 年十月 4 日16: 08x86
Msmdredir.dll9.0.1554.03,929,8882006 年十月 4 日16: 08x86
Osql.exe2005.90.1554.051,4882006 年十月 4 日16: 04x86
Replrec.dll2005.90.1554.0781,0882006 年十月 4 日16: 06x86
Sqlaccess.dll2005.90.1554.0349,4722006 年十月 4 日16: 06x86
Sqldiag.exe2005.90.1554.0960,2882006 年十月 4 日16: 06x86
Sqlservr.exe2005.90.1554.028,791,6402006 年十月 4 日16: 08x86

状态

此行为是设计使然。SQL Server 2005 中的此行为将保留在将来的 SQL Server 的版本。

SQL Server 2008 年

有关哪些文件发生更改的详细信息,并应用累积更新包包含此 Microsoft 知识库文章中描述的修补程序的任何系统必备项有关的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
956717累积更新包 1 SQL Server 2008 年

SQL Server 2005 年

如果从 SQL Server 2000 的应用程序迁移到 SQL Server 2005 之前应用于 SQL Server 2005 的此修复程序此修补程序将使应用程序使用 SQL Server 2005。例如对于您希望获得所特定的排序顺序中的数据。若要执行此操作必须使用 ORDER BY 子句,用于在 SELECT 语句中视图中通过查询。在应用此修补程序并将迁移应用程序之后,您将获得一个已排序的查询结果。

但是,此修补程序是只是一个临时的解决方法。将迁移应用程序后,您必须更新才能正常 SQL Server 2005 中新的行为与应用程序。

更新应用程序后,您可以禁用跟踪标志 168 和数据库的兼容级别更改回 90。

参考

SQL Server 2008 年发布后可用的生成的列表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
956909SQL Server 2008 生成 SQL Server 2008 发布之后发布的
对于 SQL Server 增量的服务模型的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
935897一个增量的服务模型是可从 SQL Server 团队提供报告的问题的修补程序
有关命名 SQL Server 更新架构的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
822499Microsoft SQL Server 软件更新程序包的新命名架构
有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684用于描述 Microsoft 软件更新的标准术语的说明
有关 SQL Server 2005 中的数据库的兼容级别的详细信息,请访问下面的 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/ms178653.aspx
有关如何配置的详细信息在 SQL Server 2005 中的服务器启动选项,请访问下面的 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/ms345416.aspx
有关如何使用 SQL Server 服务启动选项,请访问以下 MSDN 网站的详细信息:
http://msdn2.microsoft.com/en-us/library/ms190737.aspx

属性

文章编号: 926292 - 最后修改: 2008年9月19日 - 修订: 5.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
关键字:?
kbmt kbautohotfix kbhotfixserver kbfix kbexpertiseadvanced kbqfe kbpubtypekc KB926292 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 926292
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com