使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

Bug: # 50003826 (SQL 修补程序)

Microsoft 为一个可下载文件分发 Microsoft SQL Server 2008年的修补程序。 修补程序是累积性的因为每个新版本包含的所有修补程序,包含上一个 SQL Server 2008 的所有安全修补程序的修补都程序版本。

症状

在 SQL Server 2008 中,您可以运行一个查询,将数据插入到临时表中。 Insert 语句包含引用同一个临时表的子查询。 当您运行查询时,您可能会收到类似于以下内容的错误消息:

Msg 605,级别 21 状态 3,行 1Attempt 以获取数据库 2 中的逻辑页 (1:225) 失败。 它属于分配不到 504403158513025024 的单元 281474980315136。

如果您再次运行该查询,您会收到类似于以下内容的错误消息:

消息 824,级别 24,状态 2,第 1 行

SQL Server 检测到逻辑一致性基于 I/O 错误: 错误的校验和 (预期: 0x50758180; 实际: 0x15658bfc)。 读取页 (1:336) 的期间发生在 0x000000002a0000 文件中的偏移量的数据库 ID 2 C:\Program 该 SQL Server\MSSQL10。SQL2008\MSSQL\DATA\tempdb.mdf。 在 SQL Server 错误日志或系统事件日志中的其他邮件可能提供更多详细信息。 这是一个严重错误条件将威胁到数据库的完整性,必须立即纠正。 填写完整的数据库一致性检查 (DBCC CHECKDB)。 此错误可能导致由许多的因素;有关详细信息,请参阅 SQL Server 联机丛书。

在某些情况下,您还可能收到类似于以下内容的错误消息:

Msg 601、 级别 12、 状态 3、 过程 p过程名称,行,行号无法继续使用 NOLOCK 由于移动数据的扫描。

一种可能产生这些错误的查询构造如下所示:

insert #table1select s.col1, s.col2from #table2 s inner loop join #table1 t on s.col3 = t.col3 

解决方案

累积更新 3 中首次发布此问题的修补程序。有关如何为 SQL Server 2008 中获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

960484 SQL Server 2008 年累积更新包 3注意 因为版本具有累计性,所以每个新修补程序版本包含上一个 SQL Server 2008 修补程序版本随附的所有修补程序和所有安全修复程序。 我们建议您考虑将应用包含此修复程序的最新的修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

956909 在 SQL Server 2008 发布之后发布的 SQL Server 2008 生成在安装此累积更新包之后,您必须启用跟踪标志 4135。若要执行此操作,您可以添加-T4135启动参数。或者,您可以为特定会话使用dbcc traceon(4135)语句。

解决方法

若要变通解决此问题,请添加具有聚集的主键和临时表的标识属性的列。 例如,运行下面的语句来更改临时表:

ALTER TABLE #TempTableADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

更多信息

尽管遇到 824 或 605 错误消息时,不会损坏数据库。 此外,这些错误消息引用页从 tempdb 数据库。有关更改了哪些文件,以及任何系统必备项,应用包含在此 Microsoft 知识库文章中介绍的修复程序的累积更新包的信息,请单击下面的文章编号,以查看Microsoft 知识库中相应的文章:

960484 SQL Server 2008 年累积更新包 3

SQL Server 2008 R2 BPA 的信息

SQL Server 2008 R2 最佳实践分析器 (SQL Server 2008 R2 BPA) 提供一个规则来检测情况下,您没有累积更新或跟踪标记能够解决这一问题。 SQL Server 2008 R2 BPA 支持 SQL Server 2008年和 SQL Server 2008 R2。 如果您运行 BPA 工具并遇到"数据库引擎的 tempdb 错误修复或跟踪标志缺少"警告,您需要检查 SQL Server 和跟踪标志被配置为启用此修补程序的版本。

参考

规则软件

规则标题

规则标识符

SQL Server 2008 R2 BPA 规则

tempdb 错误修复或跟踪丢失的标志

RID3808

注意 您可以启用跟踪标志 4135 或跟踪标志 4199 若要启用此修复程序。 SQL Server 2008 中累积更新包 3 引入了跟踪标志 4135。 在 SQL Server 2008 Service Pack 1,SQL Server 2008 Service Pack 2,以及 SQL Server 2008 R2 中,跟踪标志 4135 还有。 在 SQL Server 2008 年累积更新包 7、 累积更新包 7 为 SQL Server 2008 Service Pack 1,以及针对 SQL Server 2008 R2 的累积更新包 1 引入跟踪标志 4199。 有关跟踪标志 4199 详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

974006 跟踪标志 4199 添加到多个查询优化程序会更改多个跟踪标记下先前所做的控制 此问题的修复程序包括在特定修补程序生成并跟踪标记,以启用此修补程序,因为我们要包括下表以显示不同的方案,您可以为每个方案的建议的操作。 有关最新的 SQL Server 版本的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

957826 在哪里可以找到有关最新的 SQL Server 版本

参考

在 SQL Server 2008 年发行之后的生成的列表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

956909 在 SQL Server 2008 发布之后发布的 SQL Server 2008 生成对于 SQL Server 的增量服务模式的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

935897 增量服务模式是可以从 SQL Server 团队提供报告的问题的修补程序有关命名 SQL Server 更新架构的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

822499对于 Microsoft SQL Server 软件更新程序包的新命名方案有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

824684 用于描述 Microsoft 软件更新的标准术语的说明

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×