SQL 服务器 Msmerge_content

SQL Server Msmerge_content

我刚刚作为数据库管理员加入了我的新办公室。这里我们使用 SQL 服务器合并复制。令我惊讶的是 3 个主要复制 tables

  1. Msmergre_contents
  2. Msmergre_genhistory
  3. Msmergre_tombstone

Msmergre_contents 的大小增加到 64GB,记录数增加到大约 640 亿,这是由于 None 设置为订阅的 Expiration Period

现在我想清理这个table。由于我们使用的是 Simple 恢复模型,因此当我在此 table 上编写删除查询时,一切都卡住了。 stop/pause 复制过程没有停机时间。

任何人都可以帮我解决如何最小化它的大小或删除一半的数据吗?

您不应该直接从合并系统表中删除,这是不支持的。

相反,从合并系统表中清除元数据的正确方法是将您的订阅到期时间设置为 None 以外的其他值,默认值为 14 天。当合并代理 运行 执行 sp_mergemetadataretentioncleanup. More information on subscription expiration and metadata cleanup can be found in How Merge Replication Manages Subscription Expiration and Metadata Cleanup.

时,元数据清理将 运行

但是,由于您很可能有大量需要清理的元数据,我会逐渐缩短保留期。可以在此处找到对这种方法的解释:

https://blogs.technet.microsoft.com/claudia_silva/2009/06/22/replication-infinite-retention-period-causing-performance-issues/

希望对您有所帮助。