KB2539378 - 修复:如果存储过程包含超过 4,000 个字符,则 Replmerg.exe 在枚举对 SQL Server 中的语句所做的更改时崩溃

应用对象
SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 Web SQL Server 2008 Workgroup Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Workgroup Edition Microsoft SQL Server 2005 Service Pack 3 Microsoft SQL Server 2005 Service Pack 4

症状

请考虑以下情形:

  • 更改在 Microsoft SQL Server 2005、Microsoft SQL Server 2008 或 Microsoft SQL Server 2008 R2 中的合并发布上使用的存储过程语句。
  • 存储过程包含超过 4,000 个字符。
  • 运行合并代理 (Replmerg.exe) 来枚举更改。

在这种情况下,Replmerg.exe 崩溃。 此外,应用程序日志中会记录类似下面的错误消息:

注意

日志名称:应用程序
来源:应用程序错误
Date: <Date>
事件 ID:1000
任务类别: (100)
级别:错误
关键字:经典
用户: 不适用
计算机: <计算机名称>
说明:
故障应用程序名称:replmerg.exe,版本:2007.100.4000.0,时间戳:0x4c92ec51
故障模块名称:ntdll.dll,版本:6.1.7600.16695,时间戳:0x4cc7b325
异常代码:0xc0000374
故障偏移量:0x00000000000c6ab2
错误进程 ID:0x1454
故障应用程序启动时间:0x01cbe4c4fc508bac
错误的应用程序路径:D:\Program Files\Microsoft SQL Server\100\COM\replmerg.exe
故障模块路径:D:\Windows\SYSTEM32\ntdll.dll
报告编号: 8811b864-50b8-11e0-90ff-000ffee506a7

日志名称:应用程序
来源: Windows 错误报告
Date: <Date>
事件 ID:1001
任务类别:无
级别:信息
关键字:经典
用户: 不适用
计算机: <计算机名称>
说明:
故障桶,类型 0
事件名称:APPCRASH
响应: 不可用
Cab Id:0

问题签名:
P1:replmerg.exe
P2: 2007.100.4000.0
P3: 4c92ec51
P4:StackHash_e266
P5:6.1.7600.16695
P6: 4cc7b325
P7: c0000374
P8: 00000000000c6ab2
P9:
P10:

附加的文件:

这些文件可在此处获得:
D:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_replmerg.exe_43c274c4abed59ae9c49f7a88c2cc6da29bd54_8fd3d3ca

分析符号:
重新检查解决方案:0
报告编号: 8811b864-50b8-11e0-90ff-000ffee506a7
报告状态: 0

      

原因

出现此问题的原因是 Replmerg.exe 枚举语句更改时堆损坏。

解决方法

累积更新信息

SQL Server 2008 Service Pack 3

此问题的修补程序在 SQL Server 2008 Service Pack 3 的累积更新 1 中首次发布。 有关此累积更新包的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2617146 SQL Server 2008 Service Pack 3 累积更新包 1 注意 由于版本是累积的,因此每个新的修复版本都包含之前 SQL Server 2008 修复版本中包含的所有修补程序和所有安全修补程序。 Microsoft 建议考虑应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2629969 SQL Server 2008 Service Pack 3 发布后发布的 SQL Server 2008 内部版本Microsoft为特定的 SQL Server Service Pack 创建 SQL Server 2008 修补程序。 必须将 SQL Server 2008 Service Pack 3 修补程序应用于 SQL Server 2008 Service Pack 3 的安装。 默认情况下,SQL Server Service Pack 中提供的任何修补程序都包含在下一个 SQL Server Service Pack 中。

SQL Server 2008 Service Pack 2

此问题的修补程序首次在 SQL Server 2008 Service Pack 2 的累积更新 5 中发布。 有关此累积更新包的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2555408 SQL Server 2008 Service Pack 2 累积更新包 5 注意 由于版本是累积的,因此每个新的修复版本都包含之前 SQL Server 2008 修复版本中包含的所有修补程序和所有安全修补程序。 Microsoft 建议考虑应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2402659 2008 Service Pack 2 发布之后发布的 SQL Server 2008 内部版本SQL Server Microsoft为特定的 SQL Server Service Pack 创建SQL Server 2008 修补程序。 必须将 SQL Server 2008 Service Pack 2 修补程序应用于 SQL Server 2008 Service Pack 2 的安装。 默认情况下,SQL Server Service Pack 中提供的任何修补程序都包含在下一个 SQL Server Service Pack 中。

SQL Server 2008 Service Pack 1

此问题的修补程序首次在 SQL Server 2008 Service Pack 1 的累积更新 15 中发布。 有关此累积更新包的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2555406 SQL Server 2008 Service Pack 1 累积更新程序包 15 注意 由于版本是累积的,因此每个新的修复版本都包含之前 SQL Server 2008 修复版本中包含的所有修补程序和所有安全修补程序。 Microsoft 建议考虑应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

970365 发布 SQL Server 2008 Service Pack 1 之后发布的 SQL Server 2008 内部版本,Microsoft为特定的 SQL Server Service Pack 创建SQL Server 2008 修补程序。 必须将 SQL Server 2008 Service Pack 1 修补程序应用于 SQL Server 2008 Service Pack 1 的安装。 默认情况下,SQL Server Service Pack 中提供的任何修补程序都包含在下一个 SQL Server Service Pack 中。

SQL Server 2008 R2 Service Pack 1

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

2544793 SQL Server 2008 R2 Service Pack 1 累积更新包 1 注意 由于版本是累积的,因此每个新的修补程序版本都包含之前 SQL Server 2008 R2 修补程序版本中包含的所有修补程序和安全修补程序。 建议应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2567616 在 SQL Server 2008 R2 Service Pack 1 发布之后发布的 SQL Server 2008 R2 内部版本

SQL Server 2008 R2

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

2534352 SQL Server 2008 R2 累积更新包 8 注意 由于版本是累积的,因此每个新的修补程序版本都包含之前 SQL Server 2008 R2 修补程序版本中包含的所有修补程序和安全修补程序。 建议应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

981356 在 SQL Server 2008 R2 发布之后发布的 SQL Server 2008 R2 内部版本

SQL Server 2005

修补程序信息

Microsoft 现在提供了一个受支持的修补程序。 但是,它仅用于更正本文描述的问题。 仅将其应用于遇到此特定问题的系统。

若要解决此问题,请联系 Microsoft 客户支持服务以获取该修补程序。 若要获取 Microsoft 客户支持服务的完整电话号码列表和有关支持费用的信息,请访问以下 Microsoft 网站:

/contactus/?ws=support注意 特殊情况下,如果 Microsoft 支持部门人员确定某个特定更新能够解决你的问题,可免收通常情况下收取的电话支持服务费用。 对于相关特定升级无法解决的其他支持问题和事项,将照常收取支持费用。

先决条件

要应用此修补程序,必须安装 SQL Server 2005 Service Pack 4 (SP4) 。

重启要求

应用此修补程序后,可能需要重启计算机。

修补程序替代信息

此修补程序不能替代以前发布的修补程序。

文件信息

此修补程序的英文版具有下表列出的文件属性 (或更高版本的文件属性) 。 这些文件的日期和时间以协调世界时 (UTC) 格式列出。 在查看文件信息时,文件时间将转换为本地时间。 要了解 UTC 与本地时间之间的时差,请使用“控制面板”中“日期和时间”项中的“时区”选项卡。

对于所有受支持的基于 x86 的 SQL Server 2005 版本 数据库引擎

文件名 文件版本 文件大小 日期 时间 平台
Replprov.dll 2005.90.5268.0 551,776 21-Apr-11 2,246 x86

对于所有受支持的基于 x64 的 SQL Server 2005 版本 数据库引擎

文件名 文件版本 文件大小 日期 时间 平台
Replprov.dll 2005.90.5268.0 751,968 21-Apr-11 22:43 x64

对于所有受支持的基于 IA-64 的 SQL Server 2005 版本数据库引擎

文件名 文件版本 文件大小 日期 时间 平台
Replprov.dll 2005.90.5268.0 1,629,536 22-Apr-11 0:55 IA-64

                  

                  

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

参考资料

有关复制合并代理的详细信息,请访问以下 MSDN 网站:

有关复制合并代理的一般信息