Здравствуйте, Nikolay.
Вы писали 7 ноября 2006 г., 23:22:38:


> "Konstantin R. Beliaev" <[EMAIL PROTECTED]> wrote in 
> message news:[EMAIL PROTECTED]

> Да, двухнаправленная. Но к счастью все базы удаленных точек синхронизируются 
> только через центральный офис. ХП не проходит, единственный вариант это 
> прользуясь таблицей CHANGES вытягиваем данные и подготавливаем SQL запросы 
> на вставку, обновлени, удаление. Эти запросы в текстовый файл, который 
> передаем и импортируем в базу приемник. Все это уже успешно отлажено, в 
> CHANGES есть поле loc_id, оно и указывает, в какую базу что вставляем. Я 
> никак не пойму, каким образом разрулить триггера. Т.е. при:

> CREATE TRIGGER DOCUMENTS_REPL2 FOR DOCUMENTS
> AFTER UPDATE AS
> BEGIN
>   IF( USER <> 'REPL2' ) THEN

>   BEGIN
>     INSERT INTO CHANGES2(TABLEKEY,TABLENAME,OP,LOC_ID)
>       SELECT бла-бла-бла
>       FROM REPL_TABLES2 WHERE TABLENAME=DOCUMENTS;
>   END
> END

> работе данного триггера из таблицы REPL_TABLES2 берутся уже заданные 
> параметры LOC_ID. и
> понятно, что если данные вводятся в офисе (логин SYSDBA) то они в changes 
> попадут для всех филиалов. Если данные импортируются из филиала (логин 
> REPL2), то данные в CHANGES не попадут, так как установлена проверка IF( 
> USER <> 'REPL2' ) THEN. И вот в эту схему надо как-то вписать что данные из 
> второго филиала (REPL2) должны получить третий (я так понимаю надо делать 
> REPL3?) и четвертый.(надо REPL4 ?), а данные из третьего во второй и 
> четвертый, из четвертого во второй и третий. И как раз работу с этими REPL2, 
> REPL3 и REPL4 надо вдолбить в мою голову. 



  А почему бы не вставлять информацию о том от куда пришло обнавление? То есть 
пишем в таблицу
информацию о том что изменение посадил "SYSDBA", и при подготовке к репликации 
для любого филиала
знаем что эти данные нужно брать. Если данные сели от пользователя Второго 
филиала, то система будет
знать что для репликации на 1, 3..15 нужно эти данные брать. Пользователей 
можно оформить в табличку
из сажать их ID.

-- 
С уважением,
 Вырва Валерий Евгеньевич
 Программист
 ТОО "СофтИнженер"


Ответить