2013-07-18 5 views
1

Мы реплицируем данные между SQL Server 2008 (Source) и SQL Server 2012 (Destination). Нам было предложено ограничить реплицируемые данные тем, что нам нужно.Фильтрация репликации SQL Server

Итак, мы можем добавить фильтр, НО, фильтр основан на чем-то в другой таблице. и мы не можем использовать JOIN. (Транзакционная репликация).

Но я заметил, что в редакторе для ИНЕКЕ, она позволяет это:

SELECT * FROM party WHERE party_id NOT IN (SELECT child_party_id FROM placement) 

Вот что нам нужно фильтровать. Редактор просто позволяет мне помещать что-то, что не будет работать, потому что данные в получателе вообще не фильтруются.

+0

Filter_clause - это просто оператор where, а не целое. Я не знаю, будет ли это работать (иначе я бы просто сказал, что это ответ), но попробуйте поставить «party_id NOT IN (SELECT child_party_id FROM placement)». Я подозреваю, что это не сработает в долгосрочной перспективе, так как репликация не отслеживает изменения таблицы размещения и внесения соответствующих изменений в таблицу сторонних производителей. Обходной путь может заключаться в создании и тиражировании индексированного представления. –

ответ

-1

Я был в той же проблеме ... потому что репликация trasactional не будет отбрасывать данные после удаления \ update в таблице подзапроса (таблица, используемая в where where).

В вашем примере, SELECT * FROM партии WHERE party_id NOT IN (SELECT child_party_id FROM размещения) Update на таблицу размещения не будет говорить репликации нажать строку из таблицы партии.

Смежные вопросы