MSSQL_REPL027183

适用于:SQL ServerAzure SQL 托管实例

消息详细信息

Attribute
产品名称 SQL Server
事件 ID 27183
事件源 MSSQLSERVER
组件 SQL Server 数据库引擎
符号名称
消息正文 合并进程未能使用参数化的行筛选器来枚举项目中的更改。 如果此操作仍失败,请增大该进程的查询超时值,缩短发布的保持期,并改进对已发布表的索引。

说明

在已筛选发布中处理更改时,如果出现合并代理超时,则会引发该错误。 超时可能由下列一种原因引起:

  • 没有使用预计算分区优化。

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

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

  • 未基于唯一键联接的已筛选表和涉及大量表的联接筛选器。

用户操作

若要解决问题,请执行以下操作:

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

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

  • 指定发布保持期可能的最低设置,因为只有在达到保持期时,复制才会清除发布数据库和订阅数据库中的元数据。 有关详细信息,请参阅 Subscription Expiration and Deactivation

  • 在合并复制维护过程中,应不定期检查以下与合并复制相关联的系统表的增长情况: MSmerge_contentsMSmerge_genhistoryMSmerge_tombstoneMSmerge_current_partition_mappingsMSmerge_past_partition_mappings。 定期对这些表重建索引。 有关详细信息,请参阅 重新组织和重新生成索引

  • 请确保用于筛选的列已建立了适当的索引,并根据需要重新生成这些索引。 有关详细信息,请参阅 重新组织和重新生成索引

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

  • 限制联接筛选器层次结构中的表数。 如果要生成五个或更多表的联接筛选器,请考虑其他解决方案:不筛选小表、不会发生更改的表或主要是查找表的表。 仅在必须在订阅中分区的表之间使用联接筛选器。

  • 在同步之间的筛选表上进行较少量的更改,或更加频繁地运行合并代理。 有关如何设置同步计划的详细信息,请参阅 Specify Synchronization Schedules

另请参阅

错误和事件参考(复制)