FIX: 断言失败 SQL Server 2005 中时出现一个分布式事务处理协调器 (DTC) 事务由 DTC 回滚该事务被提交的同时

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

点击这里察看该文章的英文版: 977350
Microsoft 将 Microsoft SQL Server 2005 修补程序分发作为一个可下载的文件。因为该修补程序是累积性的因此每个新版本包含的所有修补程序和所有安全修补程序附带以前 SQL Server 2005 修补都程序版本。
症状
请考虑以下情形:
  • 在 Microsoft SQL Server 2005,必须被提交的分布式事务协调器 (DTC) 事务。
  • DTC 准备分布式的事务提交后的其中一个 DTC 事务中的 SQL 交易记录是进行回滚。例如对于终止某些 spid 所涉及的 DTC 事务后,可能会回滚 SQL 事务。或者当在 SQL 事务中运行的活动会导致错误时,可能会回滚 SQL 事务。
在这种情况下可能会发生某些断言失败,和某些小型转储文件生成 SQL Server 日志文件夹中。出现此问题时, 在 SQL Server 错误日志文件中记录以下错误消息:
<Date Time> spid12s * *******************************************************************************
<日期时间 > spid12s *
<日期时间 > spid12s * BEGIN 堆栈转储:
<日期时间 > spid12s * < 日期时间 > spid 12
<日期时间 > spid12s *
<日期时间 > spid12s * 位置: xactrm.cpp:2336
<日期时间 > spid12s * 表达式: m_state = = BaseXact::XACT_PREPARED
<日期时间 > spid12s * SPID: 12
<日期时间 > spid12s * 进程 ID: 3008

<日期时间 > spid12s 错误: 17066,严重性: 16,状态: 1。
<日期时间 > spid12s SQL Server 肯定: 文件: <xactrm.cpp>,行 = 2336年失败肯定 = m_state = = BaseXact::XACT_PREPARED。此错误可能是计时相关。如果错误仍然存在,重新运行该语句后,使用 DBCC CHECKDB 检查数据库的结构的完整性,或重新启动服务器以确保在内存中的数据结构不会被损坏。
<日期时间 > spid12s 错误: 3624,严重性: 20,状态: 1。
<日期时间 > spid12s A 系统断言检查已失败。检查 SQL Server 错误日志以了解详细情况。通常,一个断言失败是由软件 bug 或数据损坏引起的。若要检查的数据库损坏,请考虑运行 DBCC CHECKDB。如果您同意在安装过程中向 Microsoft 发送转储,小型转储将发送给 Microsoft。更新可能是从 Microsoft 或技术支持从一个 QFE 最新的服务包中可用。

<Date Time> spid12s * *******************************************************************************
<日期时间 > spid12s *
<日期时间 > spid12s * BEGIN 堆栈转储:
<日期时间 > spid12s * < 日期时间 > spid 12
<日期时间 > spid12s *
<日期时间 > spid12s * 位置: viperrm.cpp:2587
<日期时间 > spid12s * 表达式: 0
<日期时间 > spid12s * SPID: 12
<日期时间 > spid12s * 进程 ID: 3008
<日期时间 > spid12s * 说明: 在此点允许无例外情况

<日期时间 > spid12s 错误: 17065,严重性: 16,状态: 1。
<日期时间 > spid12s SQL Server 肯定: 文件: <viperrm.cpp>,行 = 2587年失败肯定 ="0"没有异常允许在此点。此错误可能是计时相关。如果错误仍然存在,重新运行该语句后,使用 DBCC CHECKDB 检查数据库的结构的完整性,或重新启动服务器以确保在内存中的数据结构不会被损坏。
<日期时间 > spid12s 错误: 17053,严重性: 16,状态: 1。
<日期时间 > spid12s 高优先级系统任务线程: 操作系统错误 0x1 遇到异常。
原因
出现此问题是由于 DTC 和资源管理器 (SQL Server) 之间的逻辑不一致。这种不一致会触发断言复选。
解决方案
在累积更新 7 SQL Server 2005 Service Pack 3 的第一次释放此问题的修复程序。有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
976951累积更新包 7 为 SQL Server 2005 Service Pack 3
注意因为这些版本是累积性的因此每个新的修补程序版本包含的所有修补程序和所有安全修补程序附带以前 SQL Server 2005 修补都程序版本。Microsoft 建议您考虑应用最新的修补程序版本包含此修补程序。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
960598SQL Server 2005 生成发布后发布 SQL Server 2005 Service Pack 3
Microsoft SQL Server 2005 修补程序会创建特定 SQL Server 服务包。必须将 SQL Server 2005 Service Pack 3 修补程序应用到 SQL Server 2005 Service Pack 3 的安装。默认状态下,SQL Server service pack 中提供的任何修补程序包含在下一个 SQL Server 服务包中。
状态
Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。
参考
对于 SQL Server 增量的服务模型的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
935897一个增量的服务模型是可从 SQL Server 团队提供报告的问题的修补程序
有关如何获取 SQL Server 2005 Service Pack 3 的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
913089如何获取最新的 service pack,SQL Server 2005 年
有关新功能和改进 SQL Server 2005 Service Pack 3 中的详细信息请访问下面的 Microsoft 网站: 有关命名 SQL Server 更新架构的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
822499Microsoft SQL Server 软件更新程序包的新命名架构
有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684用于描述 Microsoft 软件更新的标准术语的说明

警告:本文已自动翻译

属性

文章 ID:977350 - 上次审阅时间:12/22/2009 03:24:17 - 修订版本: 2.0

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Workgroup, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems

  • kbmt kbexpertiseadvanced kbsurveynew kbqfe kbfix KB977350 KbMtzh
反馈