SQL Server Msmerge_content

Я только что присоединился к моему новому офису в качестве администратора базы данных. Здесь мы используем репликацию слиянием SQL Server. Меня удивляет, что 3 основных таблицы репликации

  1. Msmergre_contents
  2. Msmergre_genhistory
  3. Msmergre_tombstone

Размер Msmergre_contents вырос до 64 ГБ и нет записей о до 64 миллиардов, и это происходит из-за None установить как Expiration Period для подписок.

Теперь я хочу убрать этот стол. Как мы используем Simple Модель восстановления, когда я написал запрос на удаление этой таблицы, все застряло. У меня нет простоев, чтобы остановить / приостановить процесс репликации.

Может кто-нибудь помочь мне, как минимизировать его размер или удалить половину своих данных?

1 ответ

Решение

Не следует напрямую удалять из системных таблиц Merge, что не поддерживается.

Вместо этого правильный способ очистки метаданных из системных таблиц Merge - установить для срока действия подписки значение, отличное от None, по умолчанию это 14 дней. Очистка метаданных будет выполняться при запуске агента слияния, он выполняет процедуру sp_mergemetadataretentioncleanup. Дополнительную информацию об истечении срока подписки и очистке метаданных можно найти в разделе Как репликация слиянием управляет истечением подписки и очисткой метаданных.

Однако, поскольку у вас, скорее всего, есть много метаданных, которые необходимо очистить, я бы постепенно сократил срок хранения. Объяснение этого подхода можно найти здесь:

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

Надеюсь это поможет.

Другие вопросы по тегам