Microsoft 将 Microsoft SQL Server 2008 SP2 或 Microsoft SQL Server 2008 R2 修补程序分发为一个可下载文件。 由于修补程序是累积的,因此每个新版本都包含以前的 SQL Server 2008 SP2 或 SQL Server 2008 R2 版本修补程序所包含的所有修补程序和所有安全修补程序。
症状
请考虑以下情况:
-
在 Microsoft SQL Server 2008 或 Microsoft SQL Server 2008 R2 中有两个索引的表或视图。 第一个索引在其后有一个 AFTER 触发器。 但是,第二个索引在它上面没有 AFTER 触发器。
-
第二个索引中的某些记录包含行的版本信息。 例如,你以前已启用快照隔离功能以启用行版本。
-
您尝试针对表或视图运行 DML 查询。
在这种情况下,你可能会遇到下列问题之一:
-
出现声明失败,并且 SQL Server 错误日志中记录了以下错误:
日期时间spid # 错误:17066,严重性:16,状态:1。日期时间Spid # SQL Server Assertion: File: Pageref,line = 1332 失败断言 = "0 = = pageFull"。 此错误可能与计时有关。 如果再次运行该语句后,该错误仍然存在,请使用 DBCC CHECKDB 检查数据库的结构完整性,或者重新启动服务器以确保内存中的数据结构未损坏。日期时间spid # 错误:3624,严重性:20,状态:1。> spid #系统断言检查失败的日期时间。 有关详细信息,请查看 SQL Server 错误日志。 通常,断言失败由软件错误或数据损坏导致。 若要检查数据库是否损坏,请考虑运行 DBCC CHECKDB。 如果你同意在安装期间将转储发送到 Microsoft,则会向 Microsoft 发送一个小转储。 从 Microsoft 的最新服务包或从技术支持部门获取的 QFE 中可能提供更新。
-
查询返回不正确的结果。
-
出现数据损坏问题。
原因
出现此问题的原因是 SQL Server 查询优化程序存在缺陷。 当运行生成触发器的 DML 查询时,设置了不正确的行版本标志,SQL Server 存储引擎使用旧的行版本信息。 因此,将出现 "症状" 部分中所述的问题。
解决方案
累积更新信息
SQL Server 2008 R2
此问题的修补程序首次在累积更新10中发布。有关如何为 SQL Server 2008 R2 获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2591746 SQL Server 2008 R2 的累积更新包10 注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 修补程序版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
981356 发布 SQL Server 2008 R2 后发布的 SQL Server 2008 R2 版本
SQL Server 2008 R2 Service Pack 1
此问题的修补程序首次在 SQL Server 2008 R2 Service Pack 1 的累积更新3中发布。有关如何获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2591748 SQL Server 2008 R2 Service Pack 1 的累积更新包3注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 修补程序版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2567616 在发布 SQL Server 2008 R2 Service Pack 1 之后发布的 SQL Server 2008 R2 版本
SQL Server 2008 Service Pack 2 (SP2)累积更新包6
此问题的修补程序首次在累积更新6中发布。有关如何为 SQL Server 2008 Service Pack 2 获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2582285 SQL Server 2008 的累积更新包 6 Service Pack 2注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 Service Pack 2 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2402659 发布 SQL Server 2008 Service Pack 2 后发布的 SQL Server 2008 版本
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。