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

Откуда: Москва
Сообщений: 171
Настроил транзакционную репликацию.
Проверил: тригер FOR INSERT для таблицы подписчика при добавлении записи через эту репликацию не срабатывает.

Вопрос: можно ли на подписчике отследить вставку новой записи в таблицу через транзакционную репликацию?
Что то вроде:
create trigger for insert FOR replication

- как сделать?
13 мар 17, 14:39    [20289804]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли создать триггер на репликацию транзакций?  [new]
invm
Member

Откуда: Москва
Сообщений: 9401
Молодой
как сделать?
Убрать у триггера опцию not for replication
13 мар 17, 14:45    [20289849]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли создать триггер на репликацию транзакций?  [new]
Молодой
Member

Откуда: Москва
Сообщений: 171
В том то и проблема что не срабатывает без "not for replication"
Текст триггера (есть и на таблице паблишера и на таблице подписчика):
ALTER TRIGGER [dbo].[tgTest] ON [dbo].[TestTrigger] 
FOR INSERT 

AS
BEGIN
SET NOCOUNT ON

UPDATE t set t.N=t.N+1
FROM 
[dbo].[TestTrigger] t inner join 
INSERTED i ON t.id=i.id 

END


Таблица:
CREATE TABLE [dbo].[TestTrigger](
	[Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
	[Nm] [varchar](50) NOT NULL,
	[N] [int] NOT NULL,
	[GUID] [uniqueidentifier] ROWGUIDCOL  NOT NULL CONSTRAINT [DF_TestTrigger_GUID]  DEFAULT (newid()),
 CONSTRAINT [PK_TestTrigger] PRIMARY KEY CLUSTERED (	[GUID] ASC)
) 



При вставке на паблишер поле N - увеличивается на 1, а вот по приходу на подписчик - на 1 не увеличивается
13 мар 17, 16:16    [20290288]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли создать триггер на репликацию транзакций?  [new]
Молодой
Member

Откуда: Москва
Сообщений: 171
И собственно вопрос:
Как переписать триггер на подписчике, чтобы по приходу с паблишера, поле N увеличивалось на 1?
13 мар 17, 16:33    [20290373]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли создать триггер на репликацию транзакций?  [new]
invm
Member

Откуда: Москва
Сообщений: 9401
Молодой
чтобы по приходу с паблишера, поле N увеличивалось на 1?
Оно и так увеличивается на 1 при вставке триггером на подписчике.
Только после этого приходит еще update от триггера на издателе.
13 мар 17, 16:37    [20290385]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли создать триггер на репликацию транзакций?  [new]
Молодой
Member

Откуда: Москва
Сообщений: 171
И правда - убрал триггер на паблишере и все заработало на подписчике как надо. - Спасибо!
Одного всё таки не понял:
почему при двух триггерах, значение N добавленое на паблишере увеличивалось
по приходу на подписчик на 1 а не на 2
13 мар 17, 16:47    [20290452]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить