powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Репликация ASA902
12 сообщений из 12, страница 1 из 1
Репликация ASA902
    #36424695
dorian grey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Вопрос по репликации ASA902.
Совсем непонятно в чем дело.
Может сможет кто-нибудь навести).

Надо в работающую репликацию (Центральная база - Удаленная база) добавить новую таблицу,
Заполнять ее данными в Удаленной базе и реплицировать их в Центральную базу.

Делаю в обеих базах.
авторcreate table DBA.user_unload(id_c integer default 0);
alter publication PUBL0 add table user_unload

И дальше проблема.
Если добавляю данные непосредственно в Удаленной базе
авторinsert into user_unload (id_c) values(444);commit
то они реплицируются в Центральную.

А если в Центральной базе делаю,

авторPASSTHROUGH ONLY FOR repluser9;
insert into user_unload (id_c) values(555);commit;
PASSTHROUGH STOP;

то данные в Удаленной базе появляются, но в Центральную не реплицируются.

В чем может быть дело?


Привожу лог Удаленной базы. В нем добавление совершенно идентично.


автор
--CONNECT-1010-0838807467-DBA-2010-01-22 10:57
--BEGIN TRANSACTION-1010-0838807478
BEGIN TRANSACTION
go
--COMMIT-1010-0838807485
COMMIT WORK
go
--BEGIN TRANSACTION-1005-0838807493
BEGIN TRANSACTION
go
--INSERT-1005-0838807496
INSERT INTO DBA.user_unload(id_c)
VALUES (555)
go
--COMMIT-1005-0838807548
COMMIT WORK
go
--BEGIN TRANSACTION-1005-0838807549
BEGIN TRANSACTION
go
--COMMIT-1005-0838807569
COMMIT WORK
go


автор
--CONNECT-1001-0838806441-DBA-2010-01-22 10:49
--BEGIN TRANSACTION-1001-0838806613
BEGIN TRANSACTION
go
--INSERT-1001-0838806928
INSERT INTO DBA.user_unload(id_c)
VALUES (444)
go
--COMMIT-1001-0838806980
COMMIT WORK
go
...
Рейтинг: 0 / 0
Репликация ASA902
    #36424971
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dorian grey,

Убери ONLY и будет счастье.
И вообще непонятно зачем такой финт с ретрансляцией в центральной?
Что мешает просто выдать
insert into user_unload (id_c) values(444)
Режим ретрансляции немного для другого предназначен.
И если уж использовать его для корректировки записей в таблицах, то только для тех таблиц или столбцов, которых нет в публикации
...
Рейтинг: 0 / 0
Репликация ASA902
    #36425083
dorian grey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antanddorian grey,

Убери ONLY и будет счастье.
И вообще непонятно зачем такой финт с ретрансляцией в центральной?


Дело в том, что физического доступа к удаленной базе нет.
Данные из нее можно получить только через репликацию (через фтп).
Таким образом я хочу смотреть в Центральной базе фактическое содержимое разных таблиц Удаленной базы (в том числе и не включенных в репликацию), путем их помещения в мою таблицу.

Может быть эту задачу можно решить по другому?
...
Рейтинг: 0 / 0
Репликация ASA902
    #36425186
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dorian grey,

Какая-то хитрая задача.
Я так понимаю это чисто для тестировоания и исправления ошибок.
Проще выгрузить данные нужных таблиц из удаленной в файл и переслать его Вам.
...
Рейтинг: 0 / 0
Репликация ASA902
    #36425247
dorian grey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antanddorian grey,

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

Да, для исправления ошибок. К сожалению удаленных баз около 50.
Из каждой выгружать проблематично.
Может это ограничение PASSTHROUGH? Результаты команд,
идущих внутри этого режима, не реплицируются.
...
Рейтинг: 0 / 0
Репликация ASA902
    #36425358
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dorian grey,

Напишите скрипт выгрузки(упаковки, пересылки по почте(ftp и т.п.))
Пусть кто-нить там на удаленной его выполнит.
Если там вообще никого нет, тогда создаем таблицу скриптов, таблицу в репликацию, скрипт в таблицу, репликация передаст скрипт в удаленную, ну и остается его выполнить в удаленной
...
Рейтинг: 0 / 0
Репликация ASA902
    #36425376
dorian grey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antanddorian grey,
тогда создаем таблицу скриптов, таблицу в репликацию, скрипт в таблицу, репликация передаст скрипт в удаленную, ну и остается его выполнить в удаленной

Сейчас попробую, думаю должно получиться.
Спасибо!
...
Рейтинг: 0 / 0
Репликация ASA902
    #36425391
Victor Am
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dorian grey,
Код: plaintext
1.
2.
3.
4.
PASSTHROUGH ONLY FOR repluser9;
insert into user_unload (id_c) values( 555 );commit;
PASSTHROUGH STOP;


не смотрел по документации , но похоже эта команда не помечается в файле транзакций для отправки на удаленную.

(IMHO) создавайте таблицу в репликацию (Enabled Bit, Text VarChar) , создавайте службу, которая будет делать выборку из таблицы (where Enabled = 1) и запускайте текст запроса как "EXECUTE IMMEDIATE"
...
Рейтинг: 0 / 0
Репликация ASA902
    #36425613
dorian grey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Am
(IMHO) создавайте таблицу в репликацию (Enabled Bit, Text VarChar) , создавайте службу, которая будет делать выборку из таблицы (where Enabled = 1) и запускайте текст запроса как "EXECUTE IMMEDIATE"

Сделал в обеих базах
Код: plaintext
1.
create table DBA.user_unload_script(id integer default  0 , ls_sql long varchar default '');
alter publication PUBL0 add table user_unload_script;

Сделал в Центральной базе
Код: plaintext
1.
insert into  user_unload_script (id,ls_sql) values ( 1 ,'insert into user_unload(id_c) values(77777777)')
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
PASSTHROUGH ONLY FOR repluser9; 
begin 
declare ls long varchar;
set ls=(select ls_sql from useR_unload_script where id= 1 );
execute immediate ls;commit
end;

PASSTHROUGH STOP;

В результате не получилось.
В удаленной базе запись добавилась, но в центральную не перенеслась.
...
Рейтинг: 0 / 0
Репликация ASA902
    #36425949
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dorian grey,

Так это то же самое, что Вы и раньше делали.
Надо выполнение скрипта убрать из блока(режима) PASSTHROUGH

Можно сделать так(давно один гуру в этом форуме технологию описывал)
Повесте триггер на таблицу скриптов, по вставке вызываете событие, которое выполнит скрипт.
Только добавьте в таблицу скриптов идентификатор базы на которой нужно выполнить, чтобы у Вас обработчик события в каждой базе выполнял только скрипты предназначенные для этой базы.
...
Рейтинг: 0 / 0
Репликация ASA902
    #36433039
dorian grey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antandМожно сделать так(давно один гуру в этом форуме технологию описывал)
Повесте триггер на таблицу скриптов, по вставке вызываете событие, которое выполнит скрипт.
Только добавьте в таблицу скриптов идентификатор базы на которой нужно выполнить, чтобы у Вас обработчик события в каждой базе выполнял только скрипты предназначенные для этой базы.

Спасибо!
С событиями все получилось.
...
Рейтинг: 0 / 0
Репликация ASA902
    #36433181
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dorian grey,

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


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