peter Asked: 2012-10-04 14:06:20 +0800 CST2012-10-04 14:06:20 +0800 CST 2012-10-04 14:06:20 +0800 CST sp_addtabletocontents 是否使用预计算分区 772 我在 SQL 2012 中使用合并复制。 当我将行批量插入表中,并运行此存储过程以将引用添加到合并跟踪表中时, sp_addtabletocontents 这是否错过了使用预先计算的分区优化来预先计算分区? sql-server merge-replication 2 个回答 Voted Best Answer RThomas 2012-10-04T19:12:12+08:002012-10-04T19:12:12+08:00 有趣的问题......只要你有一个实际的场景来应用它就不会太难弄清楚。执行您的 BCP 过程,运行sp_addtabletocontents,然后在订阅者同步之前验证 MSmerge_current_partition_mappings 和 MSmerge_past_partition_mappings 表中的记录是否存在。 根据这篇 technet 文章,已更改的每一行的分区数据存储在更改后/同步前。查看本文以获取更深入的信息以及表结构在流程中的组织方式。提供的链接适用于 SQL 2008,但如果表结构相同,则可以肯定预计算逻辑足够接近以回答您的问题。 我不是预计算分区方面的专家,但在我看来,它必须利用预计算过程(如果启用),否则它根本不会同步这些记录。 peter 2012-10-19T17:51:43+08:002012-10-19T17:51:43+08:00 谢谢 RThomas,它看起来一切都很好。 我找到了一个表,其中包含以前使用 BCP 添加的记录。在运行 BCP 之后,使用了“sp_addtabletocontents”存储过程。 我将该表加入到 MSmerge_current_partition_mappings 表中,发现我表中的某些项目没有对应的 MSmerge_current_partition_mappings 记录。 看起来很可疑,但原因很简单。表中的记录对应于不再存在的分区。我重新添加了分区并关闭了发布属性对话框花了一段时间(它会添加新的 MSmerge_current_partition_mappings 记录)。 完成后我可以看到我表中的所有记录都有相应的 MSmerge_current_partition_mappings 记录。这一切都检查出来了。
有趣的问题......只要你有一个实际的场景来应用它就不会太难弄清楚。执行您的 BCP 过程,运行
sp_addtabletocontents
,然后在订阅者同步之前验证 MSmerge_current_partition_mappings 和 MSmerge_past_partition_mappings 表中的记录是否存在。根据这篇 technet 文章,已更改的每一行的分区数据存储在更改后/同步前。查看本文以获取更深入的信息以及表结构在流程中的组织方式。提供的链接适用于 SQL 2008,但如果表结构相同,则可以肯定预计算逻辑足够接近以回答您的问题。
我不是预计算分区方面的专家,但在我看来,它必须利用预计算过程(如果启用),否则它根本不会同步这些记录。
谢谢 RThomas,它看起来一切都很好。
我找到了一个表,其中包含以前使用 BCP 添加的记录。在运行 BCP 之后,使用了“sp_addtabletocontents”存储过程。
我将该表加入到 MSmerge_current_partition_mappings 表中,发现我表中的某些项目没有对应的 MSmerge_current_partition_mappings 记录。
看起来很可疑,但原因很简单。表中的记录对应于不再存在的分区。我重新添加了分区并关闭了发布属性对话框花了一段时间(它会添加新的 MSmerge_current_partition_mappings 记录)。
完成后我可以看到我表中的所有记录都有相应的 MSmerge_current_partition_mappings 记录。这一切都检查出来了。