Сопровождение тиражирования сведением в SQL Server 2000 - Контроль размеров служебных таблиц

ОГЛАВЛЕНИЕ

 

Контроль размеров служебных таблиц

Пока существует тиражирование сведением, служебные таблицы MSmerge_contents и MSmerge_tombstone неуклонно растут. Периодическая очистка этих служебных таблиц повышает производительность сведения. Для очистки применяется специальная хранимая процедура sp_mergecleanupmetadata, которая появилась еще в Microsoft SQL Server 7.0 Service Pack 2 (SP2).

Она подчищает служебные таблицы MSmerge_contents и MSmerge_tombstone на издателе. Параметр reinitialize_subscriber этой процедуры по умолчанию установлен в TRUE, что означает повторную инициализацию подписки. Если используется установка FALSE, то администратор должен гарантировать, что подписчик и издатель синхронизировались. К сожалению, на время выполнения процедуры пользовательский доступ пользователей к базе запрещается. Администратор должен аккуратно:

  1. выполнить синхронизацию;
  2. закрыть доступ пользователей к базе на издателе и на подписчике;
  3. выполнить синхронизацию с параметром -Validate;
  4. выполнить sp_mergecleanupmetadata на издателе;
  5. открыть доступ;
  6. сделать резервную копию базы на издателе.

Опытные администраторы используют для очистки служебных таблиц и свои собственные процедуры. Если есть гарантия, что в течение заданного времени синхронизация будет успешно выполнена, то из таблиц MSmer-ge_contents и MSmerge_genhistory можно удалить все поколения (generations), накопленные за этот период времени. В Листинге 1 показан пример хранимой процедуры, выполняющей эту работу.