MSSQL_REPL027183
消息详细信息
产品名称 |
SQL Server |
产品版本 |
9.0 |
产品内部版本号 |
9.00.1399.60 |
事件 ID |
27183 |
事件源 |
MSSQLSERVER |
组件 |
SQL Server 数据库引擎 |
符号名称 |
|
消息正文 |
合并进程未能使用参数化的行筛选器来枚举项目中的更改。如果此操作仍失败,请增大该进程的查询超时值,缩短发布的保持期,并改进对已发布表的索引。 |
解释
在已筛选发布中处理更改时,如果出现合并代理超时,则会引发该错误。超时可能由下列一种原因引起:
- 没有使用预计算分区优化。
- 用于筛选的列上存在索引碎片。
- 大型合并元数据表,如 MSmerge_tombstone、MSmerge_contents 和 MSmerge_genhistory。
- 未基于唯一键联接的已筛选表和涉及大量表的联接筛选器。
用户操作
解决此问题的方法:
- 增大合并代理 -QueryTimeOut 参数的值,以在解决导致错误的基本问题后,仍可继续进行处理。代理参数可以在代理配置文件和命令行中指定。有关详细信息,请参阅:
- 请尽可能使用预计算分区优化。如果许多发布要求都得到满足,则默认使用此优化。有关这些要求的详细信息,请参阅使用预计算分区优化参数化筛选器的性能。如果发布不满足这些要求,则请考虑重新设计发布。
- 指定发布保持期可能的最低设置,因为只有在达到保持期时,复制才会清除发布数据库和订阅数据库中的元数据。有关详细信息,请参阅订阅过期和停用。
- 在合并复制维护过程中,应不定期检查以下与合并复制相关联的系统表的增长情况:MSmerge_contents、MSmerge_genhistory、MSmerge_tombstone、MSmerge_current_partition_mappings、MSmerge_past_partition_mappings。定期对这些表重建索引。有关详细信息,请参阅重新组织和重新生成索引。
- 请确保用于筛选的列已建立了适当的索引,并根据需要重新生成这些索引。有关详细信息,请参阅重新组织和重新生成索引。
- 设置基于唯一列的联接筛选器的 join_unique_key 属性。有关详细信息,请参阅联接筛选器。
- 限制联接筛选器层次结构中的表数。如果要生成五个或更多表的联接筛选器,请考虑其他解决方案:不筛选小表、不会发生更改的表或主要是查找表的表。仅在必须在订阅中分区的表之间使用联接筛选器。
- 在同步之间的筛选表上进行较少量的更改,或更加频繁地运行合并代理。有关如何设置同步计划的详细信息,请参阅如何指定同步计划 (SQL Server Management Studio) 和How to: Specify Synchronization Schedules (Replication Transact-SQL Programming)。