sp_mergecleanupmetadata (Transact-SQL)
Должна использоваться только в топологиях репликации, включающих Microsoft SQL Server с версиями, более ранними, чем SQL Server 2000 с пакетом обновления 1 (SP1). Процедура sp_mergecleanupmetadata позволяет администраторам очищать метаданные в системных таблицах MSmerge_genhistory, MSmerge_contents и MSmerge_tombstone. Эта хранимая процедура выполняется в базе данных публикации на издателе.
Синтаксические обозначения в Transact-SQL
Синтаксис
sp_mergecleanupmetadata [ [ @publication = ] 'publication' ]
[ , [ @reinitialize_subscriber = ] 'reinitialize_subscriber' ]
Аргументы
- [ @publication = ] 'publication'
Имя публикации. Аргумент publication имеет тип sysname и значение, по умолчанию, %, с помощью которого очищаются метаданные для всех публикаций. При явном указании публикации она должна существовать.
- [ @reinitialize_subscriber = ] 'subscriber'
Указывает, необходимо ли повторно инициализировать подписчик. Аргумент subscriber имеет тип nvarchar(5) и может иметь значение TRUE или FALSE; значение, по умолчанию, TRUE. Подписки помечаются для повторной инициализации указания значения TRUE. При указании значения FALSE подписки не помечаются для повторной инициализации.
Значения кодов возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Замечания
Процедура sp_mergecleanupmetadata должна использоваться только в топологиях репликации, включающих SQL Server с версиями, более ранними, чем SQL Server 2000 с пакетом обновления 1 (SP1). Топологии, включающие только SQL Server 2000 с пакетом обновления 1 (SP1) или более поздние версии, должны использовать очистку метаданных, основанную на сроке хранения. Дополнительные сведения об очистке метаданных см. в разделе Как работает репликация слиянием. При выполнении этой хранимой процедуры следует помнить о необходимом и, возможно, значительном увеличении файла журнала на компьютере, на котором выполняется хранимая процедура.
Внимание! |
---|
После выполнения хранимой процедуры sp_mergecleanupmetadata, по умолчанию, все подписки на подписчиках публикаций, имеющих метаданные, хранимые в таблицах MSmerge_genhistory, MSmerge_contents и MSmerge_tombstone, помечаются для повторной инициализации, изменения, ожидающие применения, теряются, а текущий моментальный снимок помечается как устаревший. |
Примечание. |
---|
Если в базе данных имеется несколько публикаций, и какая-либо из данных публикаций использует бесконечный срок хранения публикации (@retention=0), выполняющаяся хранимая процедура sp_mergecleanupmetadata не очищает метаданные, отслеживающие изменения репликации слиянием для базы данных. По этой причине, при использовании неограниченного срока хранения публикации необходимо помнить об осторожности. |
При выполнении этой хранимой процедуры можно выбрать повторную инициализацию подписчиков или с помощью установки параметра @reinitialize_subscriber в TRUE (значение по умолчанию) или в FALSE. Если процедура sp_mergecleanupmetadata выполняется с параметром @reinitialize_subscriber, установленным в TRUE, моментальный снимок повторно применяется на подписчике даже при условии, что подписка была создана без исходного моментального снимка (например, если данные моментального снимка и схема были вручную применены или уже существовали на подписчике). Нужно внимательно производить установку этого параметра в FALSE, т.к. в том случае если публикация повторно не инициализируется, необходимо обеспечить, чтобы данные на издателе и подписчике были синхронизированы.
Независимо от значения параметра @reinitialize_subscriber процедура sp_mergecleanupmetadata не выполняется в случае, если во время вызова процедуры выполняются процессы слияния, пытающиеся передать изменения на издатель или на переиздающий подписчик.
Выполнение процедуры sp_mergecleanupmetadata с параметром @reinitialize\_subscriber = TRUE:
- Рекомендуется (но не является обязательным) остановить все обновления баз данных публикации и подписки. Если обновления будут продолжаться, выполненные обновления на подписчике с момента последнего слияния теряются при повторной инициализации публикации; при этом сходимость данных сохраняется.
- Выполните слияние с помощью агента слияния. При этом рекомендуется использовать параметр –Validate командной строки агента на каждом подписчике. При выполнении слияния в непрерывном режиме ознакомьтесь с приводимым далее разделом Специальные рассуждения о непрерывном режиме слияния.
- После завершения всех слияний запустите хранимую процедуру sp_mergecleanupmetadata.
- Для обеспечения сходимости данных выполните процедуру sp_reinitmergepullsubscription на всех подписчиках при помощи именованных или анонимных подписок по запросу.
- При выполнении слияния в непрерывном режиме ознакомьтесь с приводимым далее разделом Специальные рассуждения о непрерывном режиме слияния.
- Восстановите файлы моментального снимка для всех публикаций слиянием, используемых на всех уровнях. При попытке слияния без предварительного повторного формирования моментального снимка будет предложено повторно сформировать моментальный снимок.
- Выполните резервное копирование базы данных публикации. Невыполнение данного резервного копирования может обернуться неудачной попыткой слияния после восстановления базы данных публикации.
Выполнение процедуры sp_mergecleanupmetadata с параметром @reinitialize\_subscriber = FALSE:
- Остановите все обновления баз данных публикации и подписки.
- Выполните слияние с помощью агента слияния. При этом рекомендуется использовать параметр –Validate командной строки агента на каждом подписчике. При выполнении слияния в непрерывном режиме ознакомьтесь с приводимым далее разделом Специальные рассуждения о непрерывном режиме слияния.
- После завершения всех слияний запустите хранимую процедуру sp_mergecleanupmetadata.
- При выполнении слияния в непрерывном режиме ознакомьтесь с приводимым далее разделом Специальные рассуждения о непрерывном режиме слияния.
- Восстановите файлы моментального снимка для всех публикаций слиянием, используемым на всех уровнях. При попытке слияния без предварительного повторного формирования моментального снимка будет предложено повторно сформировать моментальный снимок.
- Выполните резервное копирование базы данных публикации. Невыполнение данного резервного копирования может обернуться неудачной попыткой слияния после.
Специальные рассуждения о непрерывном режиме слияния
При выполнении слияния в непрерывном режиме необходимо:
остановить агент слияния и выполнить другое слияние без указания параметра -Continuous;
для обеспечения слияний в непрерывном режиме, последовательно опрашиваемых при состоянии ошибки публикации, деактивируйте публикацию при помощи процедуры sp_changemergepublication.
EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'inactive'
Если завершен 3-й шаг выполнения процедуры sp_mergecleanupmetadata, возобновите непрерывный режим слияния методом, с помощью которого этот режим был остановлен. Или:
вновь добавьте параметр –Continuous для агента слияния;
заново активируйте публикацию при помощи процедуры sp_changemergepublication.
EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'active'
Разрешения
Процедуру sp_mergecleanupmetadata могут выполнять только члены фиксированной серверной роли sysadmin или фиксированной роли базы данных db_owner.
Для использования данной хранимой процедуры на издателе должен использоваться SQL Server 2000. На подписчиках должен работать SQL Server 2000 или Microsoft SQL Server 7.0, с пакетом обновления 2 (SP2).
См. также
Справочник
MSmerge_genhistory (Transact-SQL)
MSmerge_contents (Transact-SQL)
MSmerge_tombstone (Transact-SQL)
Другие ресурсы
Как работает репликация слиянием