FIX: SQL Server 2005 数据库引擎会生成失败的断言错误时您使用复制监视器来监视分发数据库

文章翻译 文章翻译
文章编号: 934106 - 查看本文应用于的产品
错误: # 50000948 (SQL 修补程序)
注意
Microsoft 将 Microsoft SQL Server 2005 修补程序分发作为一个可下载的文件。因为该修补程序是累积性的因此每个新版本包含的所有修补程序和所有安全修补程序附带以前 SQL Server 2005 修补都程序版本。
展开全部 | 关闭全部

本文内容

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

症状

当您使用复制监视器来监视分发数据库中 Microsoft SQL Server 2005 时,SQL Server 2005 数据库引擎会反复生成失败的断言错误。此外,复制监视器,会话是暂时中断。当发生失败的断言错误时, 您会遇到以下问题:
  • 如果您要针对 SQL Server 2005 实例运行一些 TRANSACT-SQL 语句或某些存储的过程,TRANSACT-SQL 语句或存储的过程不运行。
  • 如果在应用程序连接到 SQL Server 2005 实例,将关闭连接。
在这种情况下复制性能信息是不可见的。当您按 F5 更新复制监视器时,复制监视器重新连接,和信息是最新。

如果您遇到问题时正在运行一些 TRANSACT-SQL 语句或某些存储过程,TRANSACT-SQL 语句,或如果您重新连接到 SQL Server 2005 实例,然后运行 TRANSACT-SQL 语句或存储的过程,存储的过程已成功运行。

如果应用程序无法连接到该实例中,您可以重新连接已成功实例。

解决方案

可以从 Microsoft 获得支持的修补程序。但是,此修补程序被用于解决本文所述的此问题。此修补程序仅应用于出现这一特定问题的系统。此修补程序可能会接受进一步的测试。因此,如果此问题没有对您造成严重的影响,我们建议您等待包含此修补程序的下一个软件更新。

是否可供下载此修补程序没有"提供修补程序下载"部分中,在这篇知识库文章的顶部。如果不会显示此部分,请联系 Microsoft 客户服务和支持以获取此修复程序。

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

系统必备组件

您必须具有 SQL Server 2005 Service Pack 2 安装。

有关如何获取 SQL Server 2005 Service Pack 2 的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
913089如何获取最新的 service pack,SQL Server 2005 年

重新启动信息

您不必在应用此修补程序后,重新启动计算机。

注册表信息

您不必更改注册表。

修补程序文件信息

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

此修补程序的英文版具有的文件属性 (或更新的文件属性) 在下表中列出。日期和时间对这些文件列出在协调世界时 (UTC)。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的 日期和时间 项中的 时区 选项卡。
SQL Server 2005 32年-位版本
收起该表格展开该表格
文件的名称文件版本文件大小日期时间平台
Microsoft.sqlserver.maintenanceplantasks.dll9.0.3154.0296,3042007 年三月 10 日05: 49x86
Mssqlsystemresource.ldf不适用524,2882007 年三月 10 日02: 59不适用
Mssqlsystemresource.mdf不适用40,173,5682007 年三月 10 日02: 59不适用
Rdistcom.dll2005.90.3154.0644,4642007 年三月 10 日05: 49x86
Msmdlocal.dll9.0.3154.015,930,2242007 年三月 10 日05: 49x86
Sqlaccess.dll2005.90.3154.0350,5762007 年三月 10 日05: 49x86
Sqlservr.exe2005.90.3154.029,191,5362007 年三月 10 日05: 49x86
SQL Server 基于 2005 x x64 版本
收起该表格展开该表格
文件的名称文件版本文件大小日期时间平台
Microsoft.sqlserver.maintenanceplantasks.dll9.0.3154.0296,3042007 年三月 10 日05: 49x86
Mssqlsystemresource.ldf不适用524,2882007 年三月 10 日02: 59不适用
Mssqlsystemresource.mdf不适用40,173,5682007 年三月 10 日02: 59不适用
Rdistcom.dll2005.90.3154.0828,2722007 年三月 10 日11: 12x64
Msmdlocal.dll9.0.3154.015,930,2242007 年三月 10 日05: 49x86
Sqlaccess.dll2005.90.3154.0357,7442007 年三月 10 日11: 12x86
Sqlservr.exe2005.90.3154.038,655,3442007 年三月 10 日11: 12x64

状态

Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。

更多信息

此问题仅暂时影响复制性能。此问题不是致命 SQL Server 2005 数据库引擎的。此问题有没有延迟的副作用。此外,此问题仅出现在特定的时间,并在某些情况下。如果您重试同一命令,该操作将可能会成功。

要确定是否遇到此问题,打开 $ SQL Server 错误日志文件。如果您这一问题您会看到以下文本:
无法肯定 = LCK_SUCCESS (结果)
断言时生成一个小型转储文件在以下文件夹中:
Drive: \Program Files\Microsoft SQL Server\ MSSQL.x \MSSQL\LOG
注意MSSQL.x 是实例的 SQL Server 实例 ID 的占位符。您可以确定相应的值为 MSSQLSERVER 注册表项,在以下注册表子项中的值从系统:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL\
如果经常发生此问题,您可以删除或存档旧的小型转储文件从日志文件夹以释放驱动器空间。

问题命令、 一堆栈转储和断言条件,将显示 SQL Server 错误日志文件。

例如对于您可以找到问题命令 SQL Server 错误日志文件中使用以下文本:
2006-12 到 18 09:43:01.52 spid345 * 位置: IndexDataSet.cpp:18180
2006-12 到 18 09:43:01.52 spid345 * 表达式: LCK_SUCCESS (结果)
2006-12 到 18 09:43:01.52 spid345 * SPID: 345
2006-12 到 18 09:43:01.52 spid345 * 进程 ID: 1864年
2006-12 到 18 09:43:01.52 spid345 *
2006-12 到 18 09:43:01.52 spid345 * 输入缓冲区 470 字节-
2006-12 到 18 09:43:01.52 spid345 * 使用 [主机] exec [分发].sys.sp_replmonitorhelpsubsc
2006-12 到 18 09:43:01.52 spid345 * ription @ 发行者 = N'MyPublisherServer,@ publisher_db = N'mydbname
2006-12 到 18 09:43:01.52 spid345 *,@ 出版物 = N'mypub = @ 模式下的 0、 @ exclude_anonymous = 0,@ r
2006-12 到 18 09:43:01.52 spid345 * efreshpolicy = N"0
2006-12 到 18 09:43:07.03 spid345 错误: 17066,严重性: 16,状态: 1。
2006-12 到 18 09:43:07.03 spid345 SQL Server 肯定: 文件: <IndexDataSet.cpp>,行 = 18180 失败肯定 = LCK_SUCCESS (结果)。此错误可能是计时相关。如果错误仍然存在,重新运行该语句后,使用 DBCC CHECKDB 检查数据库的结构的完整性,或重新启动服务器以确保在内存中的数据结构不会被损坏。
问题命令可能会有所不同。此外,版本和 32 位平台和 64 位平台的平台之间的断言的源的代码行数可能不同。失败的断言条件相匹配此问题是 LCK_SUCCESS (结果) 条件。

调用堆栈信息

0:000> kL 100
Child-SP          RetAddr           Call Site
00000000`38637930 00000000`034b1e9c kernel32!RaiseException+0x73
00000000`38637a00 00000000`02fd8811 sqlservr!CDmpDump::Dump+0x7c
00000000`38637a50 00000000`02fcbeed sqlservr!CImageHelper::DoMiniDump+0x4e1
00000000`38637bc0 00000000`02ca9159 sqlservr!stackTrace+0x83d
00000000`38639110 00000000`02d71478 sqlservr!utassert_fail+0x6c9
00000000`38639ae0 00000000`02d8d593 sqlservr!UnlockDeallocatedPage+0x228
00000000`38639c20 00000000`02d9629b sqlservr!RemoveBTreePageIfUnchanged+0x113
00000000`38639ca0 00000000`02d9b247 sqlservr!BTreeRow::DeleteRecord+0xa9b
00000000`38639e70 00000000`02f5148e sqlservr!IndexDataSetSession::SetData+0x23c7
00000000`3863e0b0 00000000`02580bc1 sqlservr!RowsetNewSS::SetData+0x6e
00000000`3863e100 00000000`01c5d371 sqlservr!CValRowMult::SetDataX+0x1d1
00000000`3863e1c0 00000000`02616916 sqlservr!CEs::GeneralEval4+0x101
00000000`3863e270 00000000`02551d66 sqlservr!CQScanUpdateNew::GetRow+0x636
00000000`3863e300 00000000`0218f2ac sqlservr!CQueryScan::GetRow+0x76
00000000`3863e330 00000000`021908de sqlservr!CXStmtQuery::ErsqExecuteQuery+0x66c
00000000`3863e480 00000000`021910ec sqlservr!CXStmtDML::XretDMLExecute+0x2fe
00000000`3863e550 00000000`020d38a5 sqlservr!CXStmtDML::XretExecute+0xac
00000000`3863e580 00000000`020daac5 sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+0x4f5
00000000`3863e6d0 00000000`02123668 sqlservr!CMsqlExecContext::FExecute+0x775
00000000`3863e880 00000000`02148d62 sqlservr!CSQLSource::Execute+0xa38
00000000`3863e9f0 00000000`0214cd9c sqlservr!CStmtExecProc::XretLocalExec+0x262
00000000`3863ea70 00000000`02141250 sqlservr!CStmtExecProc::XretExecExecute+0x54c
00000000`3863f130 00000000`020d38a5 sqlservr!CXStmtExec::XretExecute+0x20
00000000`3863f170 00000000`020daac5 sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+0x4f5
00000000`3863f2c0 00000000`02123668 sqlservr!CMsqlExecContext::FExecute+0x775
00000000`3863f470 00000000`01f46a5a sqlservr!CSQLSource::Execute+0xa38
00000000`3863f5e0 00000000`01f4bbab sqlservr!process_request+0x43a
00000000`3863f860 00000000`03411dd6 sqlservr!process_commands+0x32b
00000000`3863fb40 00000000`034122ef sqlservr!SOS_Task::Param::Execute+0x116
00000000`3863fc40 00000000`03417713 sqlservr!SOS_Scheduler::RunTask+0xcf
00000000`3863fcb0 00000000`033f6a30 sqlservr!SOS_Scheduler::ProcessTasks+0x1c3
00000000`3863fd10 00000000`033faed6 sqlservr!SchedulerManager::WorkerEntryPoint+0x1f0
00000000`3863fda0 00000000`03400f67 sqlservr!SystemThread::RunWorker+0xd6
00000000`3863fde0 00000000`034015b1 sqlservr!SystemThreadDispatcher::ProcessWorker+0x337
00000000`3863fe70 00000000`781337a7 sqlservr!SchedulerManager::ThreadEntryPoint+0x271
00000000`3863ff20 00000000`78133864 msvcr80!_callthreadstartex+0x17
00000000`3863ff50 00000000`77d6b69a msvcr80!_threadstartex+0x84
00000000`3863ff80 00000000`00000000 kernel32!BaseThreadStart+0x3a
有关命名 Microsoft SQL Server 更新架构的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
822499Microsoft SQL Server 软件更新程序包的新命名架构
有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684用于描述 Microsoft 软件更新的标准术语的说明
此修补程序也包含在累积更新包 (生成 3161) 为 SQL Server 2005 Service Pack 2 中。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
935356对于 SQL Server 2005 Service Pack 2 的累积更新包 (生成 3161) 不可用

属性

文章编号: 934106 - 最后修改: 2007年11月20日 - 修订: 2.5
这篇文章中的信息适用于:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Standard Edition
  • 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 kbautohotfix kbsql2005repl kbfix kbexpertiseadvanced kbhotfixserver kbqfe kbpubtypekc KB934106 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 934106
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