powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / АСА 9.0.1.1889 - Интересный баг(???) с подписками
2 сообщений из 2, страница 1 из 1
АСА 9.0.1.1889 - Интересный баг(???) с подписками
    #32760432
av1975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробую обьяснить на словах, скрипта, к сож., нет.

Есть консолидированная и удаленная база.
В удаленной базе естественно есть консолидейтед юзер (c_user).
Который в том числе подписан на таблицу (t_table) по полю (base_id).
Предположим в консолидированную базу должны попадать не все строки из t_table, а только с base_id=1 (т.е. c_user подписан на t_table по полю id_base на значение 1).

Так вот, если в удаленной базе сделать процедуру, в которой определить курсор, в котором добавлять или апдейтить строки с base_id=1 и base_id=2, то в консолидированную базу приедут ВСЕ изменения сделанные внутри курсора.

Почему так? (М.б. из-за того, что в лог весь курсор попадает одной транзакцией???)

Это баг или фича?

Интересно, в обратную сторону (от консолидированной базы к удаленной) так же? А как бороться? Внутри курсора стартовать транзакции и их завершать можно? Поможет?
...
Рейтинг: 0 / 0
АСА 9.0.1.1889 - Интересный баг(???) с подписками
    #32763937
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточни пожалуйста, речь идет о курсоре или о процедуре? :)
Вообще-то, если там процедура, то в репликацию должны попадать только подходящие в условие изменения. В BOL об этом прямо говорится:

BOL
SQL Remote User's Guide
Principles of SQL Remote Design
How statements are replicated

Replication of procedures

--------------------------------------------------------------------------------

Any replication system is faced with a choice between two options when replicating a stored procedure call:

Replicate the procedure call A corresponding procedure is executed at the replicate site, or

Replicate the procedure actions The individual actions (INSERTs, UPDATEs, DELETEs and so on) of the procedure are replicated.

SQL Remote replicates procedures by replicating the actions of a procedure. The procedure call is not replicated.


--------------------------------------------------------------------------------

А вот если вызов процедуры идет из курсора или триггера, то это уже расценивается как атомарная операция и в сообщение репликации пойдет вызов процедуры. Соотвественно на консолидированной или удаленой базе этот вызов будет повторен с такими же параметрами. Ну и копия процедуры на базе-получателе сделает такие же изменения, не взирая на всякие репликационные фильтры (их на этапе получения уже нету :)).
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / АСА 9.0.1.1889 - Интересный баг(???) с подписками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]