Microsoft 以一个可下载文件的形式分发 Microsoft SQL Server 2008 R2 修补程序。 由于修补程序是累积的,因此每个新版本都包含了以前的 SQL Server 2008 R2 修补程序版本附带的所有修补程序和所有安全修补程序。
症状
请考虑以下情况:
-
在 SQL Server 2008 R2 中创建事务发布。
-
将表格作为文章添加到出版物。
-
初始化事务发布,并生成初始快照。
-
尝试运行查询以向表中添加新列。例如,尝试运行以下查询以将 <列名> 列添加到 <表名称> 表中:
Alter table <table name> add <column name> int null
在此方案中,查询不会运行,并且你会收到类似于以下内容的错误消息:
位置: replschema:1305Expression:(pCopySrc-command) <= (int) cmdLengthSPID: <Spid>进程 ID: <进程 ID>
消息4902、级别16、状态1、行2Cannot 查找 <表名称> 的对象,因为该对象不存在或者你没有权限。出现此问题时,将在 SQL Server 错误日志文件中记录以下错误消息。
或者,你可能会遇到以下稍有不同的错误:
消息3624,级别20,状态1,过程 sp_replflush,第1A 行系统断言检查失败。 有关详细信息,请查看 SQL Server 错误日志。 通常,断言失败由软件错误或数据损坏导致。 若要检查数据库是否损坏,请考虑运行 DBCC CHECKDB。 如果你同意在安装期间将转储发送到 Microsoft,则会向 Microsoft 发送一个小转储。 从 Microsoft 的最新服务包或从技术支持部门获取的 QFE 中可能提供更新。
此外,错误日志中还记录以下条目:
2011-03-25 08:56: 14.71 spid55 错误:17066,严重性:16,状态: 14.71 spid55 SQL Server Assertion: File: <replschema>,line = 1305 失败的 Assertion = "(pCopySrc-command) <= (int) cmdLength"。 此错误可能与计时有关。 如果在重新运行该语句后,该错误仍然存在,请使用 DBCC CHECKDB 检查数据库的结构完整性,或重启服务器以确保内存中的数据结构未损坏。 2011-03: 14.92 spid55 错误:3624,严重等级:20,状态: 1.2011-03-25 08:56: 14.92 spid55 系统断言检查失败。 有关详细信息,请查看 SQL Server 错误日志。 通常,断言失败由软件错误或数据损坏导致。 若要检查数据库是否损坏,请考虑运行 DBCC CHECKDB。 如果你同意在安装期间将转储发送到 Microsoft,则会向 Microsoft 发送一个小转储。 从 Microsoft 的最新服务包或从技术支持部门获取的 QFE 中可能提供更新。
解决方案
累积更新信息
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 此问题的修补程序首次在累积更新7中发布。有关如何为 SQL Server 2008 R2 获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2507770 SQL Server 2008 R2 的累积更新包7 注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 修补程序版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
981356 发布 SQL Server 2008 R2 后发布的 SQL Server 2008 R2 版本
解决方法
要解决此问题,请修改表名称以包含少于8个字符。
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。