У нас была эта проблема на этой неделе при использовании сценариев, сгенерированных SQL Compare, для синхронизации наших производственных сред и сред разработки.Проблема вызвана тем, что скрипт из SQL Compare (или что вы используете) запускает транзакцию с более высоким уровнем изоляции, чем READ COMMITTED или REPEATABLE READ.
Когда вы запускаете часть скрипта, у вас есть ALTER TABLE для добавления столбца, который инициирует вызов кода репликации SQL, который распространяет команду ALTER TABLE среди подписчиков.Этот код не может выполняться внутри более крупной транзакции с более высоким уровнем изоляции.
Решением, которое мы использовали, было создание сценария репликации.Удалите репликацию на этой таблице.Примените сценарий синхронизации.Затем воссоздайте репликацию.
Альтернативой может быть редактирование сценария синхронизации для изменения уровня изоляции транзакции или ее полного удаления.Это было не то, что мы хотели сделать, поэтому мы пошли с ранее упомянутым решением.