Репликация слиянием - запускает запуск как на издателе, так и на подписчике - PullRequest
2 голосов
/ 24 июля 2011

Версия сервера: SQL Server 2008R2 Версия клиента: SQL Server Express 2008R2

При запуске процесса репликации слиянием возникли проблемы с блокировкой.Похоже, что когда подписчик вносит изменения и синхронизируется с издателем.Я уверен, что эти триггеры исходят из-за того, что они снова запускают издателя и, вероятно, снова пытаются отправить данные подписчикам.Я добавил «НЕ ДЛЯ РЕПЛИКАЦИИ» к триггерам, но это, похоже, не помогает.Я также исследовал и попытался добавить следующий пункт:

DECLARE @is_mergeagent BIT

SELECT @is_mergeagent = convert(BIT, sessionproperty('replication_agent'))

IF @is_mergeagent = 0 --IF NOT FROM REPLICATION

Это тоже не помогло.Как вы справляетесь с репликацией слиянием с помощью триггеров вставки / обновления?Могу ли я предотвратить их «двойную» стрельбу?

Всегда ценю информацию.

- S

Ответы [ 2 ]

2 голосов
/ 01 августа 2011

Не уверен насчет запуска триггеров, но SESSIONPROPERTY даст здесь значение NULL. Таким образом, последующий тест всегда терпит неудачу.

<Any other string> [дает] NULL = Неверный ввод.

Вы, вероятно, имеете в виду APP_NAME

Это должно как минимум помочь в устранении неполадок ...

1 голос
/ 29 июля 2011

Я бы добавил битовое поле в таблицу, которая вызывает проблему, и назвал бы ее "обработанной" или что-то в этом роде.установите для него значение по умолчанию false, а затем установите значение true, когда триггер обновит эту запись, и сделайте так, чтобы триггер проверил наличие ложного значения, прежде чем он что-либо сделает, в противном случае он ничего не будет делать.

...