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