KB2256829 - 修复:如果在 SQL Server 2008 或 SQL Server 2008 R2 中使用 Web 同步进行合并复制,则一定数量的最后 XML 列可能无法正确复制

应用对象
SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Workgroup SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Workgroup

Microsoft 将 Microsoft SQL Server 2008 和 Microsoft SQL Server 2008 R2 修复程序作为一个可下载的文件分发。 由于修补程序是累积的,因此每个新版本都包含之前 SQL Server 2008 或 SQL Server 2008 R2 修补程序版本中包含的所有修补程序和安全修补程序。

症状

请考虑以下情形:

  • 您创建一个合并发布,并将其配置为在运行 Microsoft SQL Server 2008 或 SQL Server 2008 R2 的计算机上启用 SQL Server Web 同步。
  • 您为发布选择一个表。 该表有若干 XML 列,并且某些 XML 列设置为 NULL。
  • 为合并发布配置订阅,然后初始化合并复制。

在此方案中,订阅表的最后一定数量的列为空。

例如,您有一个包含三个 XML 列的表。 表的其中一条记录中的第一个 XML 列为 NULL 。 但是,此记录的第二和第三个 XML 列包含 XML 数据。 在这种情况下,在发生合并复制后,最后一个 XML 列被错误地设置为空字符串。

原因

出现此问题的原因是 Web 同步的复制逻辑中出错。

发生复制时,将计算非 NULL 的 XML 列数。 但是,当 XML 列流式传输到订阅者时,复制操作仅复制此数量的列。 因此,其余列具有空字符串。

在“症状”部分中描述的示例中,有两个 XML 列不为空。 因此,只有前两个 XML 列会使用正确的数据进行复制。

解决方法

累积更新信息

SQL Server 2008 Service Pack 1

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

2279604 SQL Server 2008 Service Pack 1 累积更新包 10 注意 由于版本是累积的,因此每个新的修复版本都包含之前 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 Service Pack 2

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

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

2402659 在 SQL Server 2008 Service Pack 2 发布之后发布SQL Server 2008 内部版本

SQL Server 2008 R2

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

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

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

状态

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

参考资料

有关合并复制的 Web 同步的详细信息,请访问下面的 Microsoft Developer Network (MSDN) 网站:

有关合并复制的 Web 同步的一般信息 有关如何为合并复制配置 Web 同步的更多信息,请访问以下 MSDN 网站:

有关如何为合并复制配置 Web 同步的一般信息有关 SQL Server 增量服务模型的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

935897 可从 SQL Server 团队获取增量服务模型以提供可以解决所报告问题的修补程序

有关 SQL Server 更新的命名架构的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

822499 Microsoft SQL Server 软件更新包的新命名模式有关软件更新术语的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

824684 用于描述Microsoft软件更新的标准术语说明