你目前正处于脱机状态,正在等待 Internet 重新连接

SQL Server 断言错误时您尝试执行大容量插入或 BCP 的语句:"<loglock.cpp>,行 = 807 失败的断言 = 结果 = LCK_OK ="</loglock.cpp>

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

点击这里察看该文章的英文版: 2700641
症状
请考虑以下情形:
  • Microsoft SQL Server 或 SQL Server 2008 R2,正在运行服务器 A 和服务器 B。
  • 设置数据库镜像之间服务器 A 和服务器 b。
  • 在主数据库上执行大容量插入或 BCP 的语句。

    注意默认情况下将 CHECK_CONSTRAINTS 选项设置为 off 时执行大容量插入或 BCP 语句。
  • 数据库镜像断开,并且在进入挂起状态,数据库镜像会话。
在这种情况下,断言发生在镜像服务器上。因此,SQL Server 日志文件夹中创建一个小型转储文件。此外,您将看到以下镜像服务器上的 SQL Server 错误日志中的错误:

日期时间 spid 使用 dbghelp.dll 版本"4.0.5"
日期时间 spid ** 转储线程的 spid = 31,EC = 0x00000007F9B1C1A0
日期时间 spid *** 发送到名是 SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\LOG\SQLDump0001.txt 堆栈转储

日期时间 spid * *******************************************************************************

日期时间 spid *
日期时间 spid * 开始堆栈转储:
日期时间 spid * 01/04/12 16: 46: 21 spid 12100
日期时间 spid *
日期时间 spid * 位置: loglock.cpp:807
日期时间 spid * 表达式: 产生 = = LCK_OK
日期时间 spid * SPID: 31
日期时间 spid * 进程 ID: 2228年

日期时间 spid 错误: 17066,严重性: 16,状态: 1。

日期时间 spid SQL Server 断言: 文件: <loglock.cpp>,行 = 807 失败的断言 = 结果 = = LCK_OK。此错误可能是计时相关。如果错误仍然存在重新运行该语句后,使用 DBCC CHECKDB 检查的数据库结构的完整性,或重新启动服务器以确保内存中的数据结构未损坏。

</loglock.cpp>日期时间 spid 错误: 3624,严重性: 20,状态: 1。

日期时间 spid 系统断定检查已失败。检查 SQL Server 错误日志的详细信息。通常情况下,断言失败是由软件错误或数据损坏引起的。要检查的数据库损坏,请考虑运行 DBCC CHECKDB。如果您同意在安装过程中向 Microsoft 发送转储,则最小转储将发送给 Microsoft。更新可以从 Microsoft 最新的 Service Pack 中或从技术支持的 QFE。

日期时间 spid 错误: 1454,严重性: 16,状态: 1。

日期时间 spid 数据库镜像将被挂起。服务器实例 '<Instance name="">' 时遇到错误 3624,状态 1,严重性 20 时充当镜像数据库<database name="">的合作伙伴。数据库镜像合作伙伴可能会尝试自动从错误中恢复并恢复镜像会话。有关详细信息,查看错误日志中的其他错误消息。 </database></Instance>


注意您必须重新初始化数据库镜像要解决此问题。
原因
由于主体数据库的事务日志中的锁兼容性信息不会传输到镜像服务器,则会出现此问题。
替代方法
若要解决此问题,请使用 CHECK_CONSTRAINTS ON 选项在主数据库上执行大容量插入或 BCP 语句。

注意CHECK_CONSTRAINTS ON 选项会导致性能下降。但是,锁定断言上镜像服务器不会发生。
更多信息
在大容量插入或 BCP 操作中,子事务关闭 CHECK_CONSTRAINTS 选项。此子事务使用与父事务锁的锁。主体数据库的事务日志中存储的兼容性信息。因此,在主数据库上授予子事务锁请求。

但是,此兼容性信息不传输到镜像服务器中。因此,子事务锁请求是与镜像服务器上的父事务锁不兼容。这种情况下会导致在镜像服务器上的断言。

警告:本文已自动翻译

属性

文章 ID:2700641 - 上次审阅时间:08/06/2012 16:30:00 - 修订版本: 1.0

Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 Enterprise

  • kbsurveynew kbtshoot kbprb kbmt KB2700641 KbMtzh
反馈
script" src="https://c.microsoft.com/ms.js">