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

Откуда:
Сообщений: 5
Добрый день!
Есть сеть предприятия, один домен. Есть сервер MS SQL2008R2.
Есть клиентские компьютеры, часть из них находится в области с перебоями работы локальной сети. На компьютерах запущено приложение под .Net работающее с БД. Оно может работать с сервером напрямую, но для защиты от сбоев соединения на части рабочих мест развернуты локальные базы данных SQL EXPRESS 2008 R2, связанные с сервером репликацией слиянием. Особенностью работы системы является генерация новых данных на подписчиках, т.е. в локальных базах Express. В результате установлен режим двунаправленной репликации. Репликация настроена с использованием фильтрации HOST_NAME(), однако данного ограничения недостаточно. Со временем локальные базы будут переполняться (особенно с учетом ограничений сервера EXPRESS), и, поэтому, требуется удаление данных из локальной базы с сохранением их в центральной базе издателя.
В результате возникает 2 вопроса:
1) Есть ли возможность запретить удаление данных с издателя при удалении на подписчике при разрешенной вставке новых записей и обновлении данных с подписчика?
2) Есть ли возможность настроить фильтрацию реплицируемых данных по времени их создания например (т.е. по значению одного из столбцов) что бы старые данные, старше двух недель например, автоматически удалялись с подписчика?

Читая документацию я не нашел ответа на подобные вопросы, можно ли сделать вообще такое ограничение.
Вообще ситуация очень похожа на обсуждавшуюся здесь, но об удалении там речь не шла.

Заранее спасибо за ответ!
30 июл 14, 11:18    [16375535]     Ответить | Цитировать Сообщить модератору
 Re: Репликация слиянием. Можно ли ограничить репликацию удаления записей с одной стороны?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8821
Построчные фильтры можно настроить, если память не изменяет.

Выборочное удаление не относится к репликации данных, пишите свою репликацию. Репликация предназначена для синхронизации (по условию ограничения передаваемых данных, в частности), а не для цирковых номеров :)
30 июл 14, 14:20    [16377115]     Ответить | Цитировать Сообщить модератору
 Re: Репликация слиянием. Можно ли ограничить репликацию удаления записей с одной стороны?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
CaveL1zard,

1) Есть ли возможность запретить удаление данных с издателя при удалении на подписчике при разрешенной вставке новых записей и обновлении данных с подписчика?

Ответ ДА МОЖНО,

http://www.mssqltips.com/sqlservertip/2520/options-to-not-replicate-sql-server-delete-commands/

2) Есть ли возможность настроить фильтрацию реплицируемых данных по времени их создания например (т.е. по значению одного из столбцов) что бы старые данные, старше двух недель например, автоматически удалялись с подписчика?

ДА МОЖНО в процедуре sp_addarticle @filter_clause= или в интерфейсе репликации
30 июл 14, 17:30    [16378443]     Ответить | Цитировать Сообщить модератору
 Re: Репликация слиянием. Можно ли ограничить репликацию удаления записей с одной стороны?  [new]
CaveL1zard
Member

Откуда:
Сообщений: 5
Владислав Колосов
Построчные фильтры можно настроить, если память не изменяет.

Спасибо!
Нашел статью, попробовал, сделал фильтр на две недели назад от текущего момента - работает.
Не понял одного. А строка будет удалена из БД подписчика если перестанет удовлетворять условию? или для этого надо моментальный снимок переинициализировать?
30 июл 14, 18:07    [16378642]     Ответить | Цитировать Сообщить модератору
 Re: Репликация слиянием. Можно ли ограничить репликацию удаления записей с одной стороны?  [new]
CaveL1zard
Member

Откуда:
Сообщений: 5
a_voronin, большое спасибо!
30 июл 14, 18:09    [16378646]     Ответить | Цитировать Сообщить модератору
 Re: Репликация слиянием. Можно ли ограничить репликацию удаления записей с одной стороны?  [new]
CaveL1zard
Member

Откуда:
Сообщений: 5
a_voronin
CaveL1zard,

1) Есть ли возможность запретить удаление данных с издателя при удалении на подписчике при разрешенной вставке новых записей и обновлении данных с подписчика?

Ответ ДА МОЖНО,

http://www.mssqltips.com/sqlservertip/2520/options-to-not-replicate-sql-server-delete-commands/


В статье по указанной ссылке приведен скриншот окна SSMS со свойствами статьи репликации. И указано что пример приводится для 2008.
В моём случае интерфейс отличается и части опций, описанных в статье там нет. Скриншот в приложенном файле. (Интерфейс к сожалению русский, скачал не ту версию(( )
Либо у меня версия SSMS неправильная, либо я что-то не так понял.

К сообщению приложен файл. Размер - 104Kb
31 июл 14, 10:31    [16380379]     Ответить | Цитировать Сообщить модератору
 Re: Репликация слиянием. Можно ли ограничить репликацию удаления записей с одной стороны?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
CaveL1zard,

Я инициализировал репликацию через скрипты под 2012. Вам нужен параметр delete_tracking

http://msdn.microsoft.com/en-us/library/ms174386.aspx
31 июл 14, 12:03    [16381035]     Ответить | Цитировать Сообщить модератору
 Re: Репликация слиянием. Можно ли ограничить репликацию удаления записей с одной стороны?  [new]
CaveL1zard
Member

Откуда:
Сообщений: 5
a_voronin, спасибо!
31 июл 14, 12:27    [16381199]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить