Среда: SQL Server 2005 SP2 (9.0.3077) Транзакционные публикации (рабочая и бета-версия)
У меня есть ситуация, когда у меня есть две разные настройки репликации публикаций, которые используют одни и те же статьи. Каждая из этих публикаций обслуживает подписчика на другом компьютере. Одна из этих общих статей - таблица. Через регулярный интервал времени многие записи в этой таблице устаревают и больше не нужны. В это время вызывается хранимая процедура, удаляющая записи.
Чтобы сэкономить ресурсы и уменьшить время ожидания для подписчиков, я установил для свойства replicate этой хранимой процедуры значение «Выполнение хранимой процедуры» вместо значения по умолчанию «Только определение хранимой процедуры». Таким образом, когда хранимая процедура удаляет более 2 000 000 записей, они не передаются подписчикам. Вместо этого выполнение хранимой процедуры реплицируется, и на подписчиках выполняется та же реплицированная хранимая процедура, которая удаляет те же 2 000 000+ строк.
У меня проблема со второй публикацией. Мне не требовалось такое поведение, поэтому я оставил для свойства article хранимой процедуры значение «Только определение хранимой процедуры» и ожидал, что репликация удалит строки у другого подписчика, но этого не произошло. Таблица у подписчика просто продолжала набирать записи. Поэтому, чтобы исправить это, я установил для свойства Article значение «Execution ...» и назвал это хорошим. Это, вероятно, лучшее решение, так как бета-версия соответствует производственной, но все же это похоже на кладж, поскольку свойства публикации должны работать независимо друг от друга.
Вопрос: Почему свойство статьи «Выполнение хранимой процедуры» имеет приоритет и применяется к другой публикации, даже если для него установлено значение «Только определение хранимой процедуры» в другой публикации?