Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Репликация транзакций: триггер на подписчике  [new]
Вася
Member

Откуда: местный
Сообщений: 543
Как заставить работать триггер на подписчике:
т.е дабавили строку в таблицу на издателе,
эта строка добавилась на подписчике, но триггер этой таблицы на подписчике не срабатывает.

Так и должно быть ?
В поиске ничего не нашел :(
4 май 03, 13:33    [189643]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций: триггер на подписчике  [new]
IvHarbor
Guest
Для этого, думаю, нужно в свойствах публикации установить галку публиковать триггеры. У меня триггеры запускаются. Но только мне как раз это не нужно. Сейчас триггеры запускаются и на подписчике и на издателе, а надо только в одном месте (там где вносили изменения). Есть ли такое, а то не хорошо получается, у меня в триггерах ставится время изменения и имя пользователя, а так получается дата репликации и имя - учетная запись, под которой работает агент слияния.
4 май 03, 14:37    [189659]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций: триггер на подписчике  [new]
IvHarbor
Member

Откуда: Россия, Новосибирск
Сообщений: 36
Хотя для репликации транзакций триггер и должен запускаться только на издателе (думается мне).
4 май 03, 14:41    [189660]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций: триггер на подписчике  [new]
Вася
Member

Откуда: местный
Сообщений: 543
to IvHarbor

на издателе
alter trigger mytrig for .... NOT FOR REPLICATION
5 май 03, 07:25    [189785]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций: триггер на подписчике  [new]
Вася
Member

Откуда: местный
Сообщений: 543
Немного разобрался, оказывается не срабатывает только триггер UPDATE, поскольку на подписчике изменяемая строка удаляется, а затем вставляется.
5 май 03, 07:28    [189787]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций: триггер на подписчике  [new]
Вася
Member

Откуда: местный
Сообщений: 543
оказывается если в таблице построен уникальный индекс, то при изменении этого поля, на подписчике строка удаляется, а потом вставляется
5 май 03, 13:26    [190147]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций: триггер на подписчике  [new]
Вася
Member

Откуда: местный
Сообщений: 543
какой оживленный "диалог" получается
5 май 03, 13:28    [190151]     Ответить | Цитировать Сообщить модератору
 Re: Репликация транзакций: триггер на подписчике  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31177
Ну сам-же разобрался :-)

Только вроде замена происходит, не если меняется поле, на которое построен уникальный индекс, а поле, входящее в ПК.
5 май 03, 13:43    [190181]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Репликация транзакций: триггер на подписчике  [new]
Index
Guest
Если вы обновляете какой-либо столбец таблицы базы данных, обслуживаемой Microsoft SQL Server 2000 Standard и Enterprise Edition, который является частью уникального или составного индекса, SQL Server осуществляет обновление как отложенное изменение. Отложенное изменение означает, что команда UPDATE будет передана подписчику как пара операций: DELETE и INSERT. Отложенное изменение более подробно описано в статье базы знаний Microsoft: "Q238254 INF: UPDATE Statements May be Replicated as DELETE/INSERT Pairs". Возможны случаи, когда передача подписчикам изменений в виде пары команд DELETE и INSERT не отвечает требованиям бизнес-правил, которые, например, могут предписывать передачу подписчику действий триггеров при обновлениях. Именно для того, чтобы помочь правильно разрешить эту ситуацию, был введен флаг трассировки №8207, который появился в SQL Server 2000 Service Pack 1, и при использовании которого в репликации транзакций допускаются изменения одной командой. Обновление уникального столбца, которое затрагивает только одну строку (изменение, которое принято называть "singleton"), осуществляется как команда UPDATE, а не как пара операций DELETE и INSERT. Если изменения затрагивают несколько строк, изменение будет выполняться как пара команд DELETE и INSERT. Вы можете задать ключ трассировки 8207 на сервере, исполняющем роль издателя, выполняя команду DBCC TRACEON (8207, -1) при каждом запуске SQL Server, или добавив к параметрам запуска сервера баз данных ключ -T8207. Ключ трассировки 8207 используется только в варианте репликации транзакций без обновляемых подписчиков.

О флаге 8207:

INFO: Trace Flag to Replicate UPDATE as DELETE/INSERT Pair
25 авг 09, 11:18    [7576185]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить