MSSQL_REPL027183

消息详细信息

产品名称 SQL Server
事件编号 27183
事件源 MSSQLSERVER
组件 SQL Server 数据库引擎
符号名称
消息正文 合并过程未能枚举具有参数化行筛选器的文章中的更改。 如果这种故障持续发生,请增加对此进程的查询超时时间,缩短发布的保留周期,并优化已发布表的索引。

说明

如果合并代理处理筛选发布中的更改时发生超时,将会引发此错误。 超时可能是由以下问题之一引起的:

  • 不使用预计算分区优化。

  • 用于筛选的列的索引碎片。

  • 大型合并元数据表,例如 MSmerge_tombstoneMSmerge_contentsMSmerge_genhistory

  • 未在唯一键上联接的筛选表和涉及大量表的联接筛选器。

用户操作

若要解决此问题,请执行以下步骤:

  • 增加合并代理的 -QueryTimeOut 参数的值,以便在解决导致错误的根本问题时继续处理。 代理参数可以在代理配置文件和命令行中指定。 有关详细信息,请参见:

  • 如果可能,请使用预计算的分区优化。 如果满足许多发布要求,则默认使用此优化。 有关这些要求的详细信息,请参阅 使用预计算分区优化参数化筛选器性能。 如果发布不符合这些要求,请考虑重新设计发布。

  • 指定发布保留期可能的最低设置,因为复制在达到保留期之前无法清理发布和订阅数据库中的元数据。 有关详细信息,请参阅 订阅过期和停用

  • 作为合并复制维护的一部分,偶尔会检查与合并复制关联的系统表的增长: MSmerge_contentsMSmerge_genhistoryMSmerge_tombstoneMSmerge_current_partition_mappingsMSmerge_past_partition_mappings。 定期重新索引这些表。 有关详细信息,请参阅 重新组织和重新生成索引

  • 确保用于筛选的列已正确编制索引,并在必要时重新生成此类索引。 有关详细信息,请参阅 重新组织和重新生成索引

  • 为基于唯一列的联接筛选器设置 join_unique_key 属性。 有关详细信息,请参阅 “联接筛选器”。

  • 限制联接筛选器层次结构中的表数。 如果您要创建五个或更多表的联接筛选器,请考虑其他解决方案:不要筛选那些规模小、不易更改或主要用作查找的表。 仅在必须在订阅之间分区的表之间使用联接筛选器。

  • 在同步之间对筛选表进行少量更改,或更频繁地运行合并代理。 有关设置同步计划的详细信息,请参阅 “指定同步计划”。

另请参阅

错误和事件参考 (复制)