powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Режим ретрансляции
8 сообщений из 8, страница 1 из 1
Режим ретрансляции
    #35328121
Andreas_84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята,мне предстоит добавить столбец char(4) в таблицу,которая учавствует в репликации.

Вообщем мануалы почитал,там это описано как вродебы предусмотренные изменения структуры (разрешённые).Хотелось бы от кого-нибудь узнать каки возможные проблемы могут появиться если я на консолидированной базе сделаю так:
Код: plaintext
1.
2.
3.
4.
PASSTHROUGH FOR SUBSCRIPTION 
 TO PPP
alter table veseventlog add CCC char( 4 );
PASSTHROUGH STOP 
где PPP-имя публикации,где планируютсяизменения
CCC -столбец


Что делать,если он в удалённой базе не добавится???Репликация то точно слетит!
Вообщем кто это делал,отзовитесь))) пожалуйста!!
...
Рейтинг: 0 / 0
Режим ретрансляции
    #35328219
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andreas_84... на консолидированной базе...
... Что делать,если он в удалённой базе не добавится???Репликация то точно слетит!
Если на консолидированную полетит без CCC с других, где еще не добавлено, то чтобы не отвалилось, достаточно добавить в конец alter table-а null, или сделать default. Или о чем вопрос?
...
Рейтинг: 0 / 0
Режим ретрансляции
    #35328292
Andreas_84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов Andreas_84... на консолидированной базе...
... Что делать,если он в удалённой базе не добавится???Репликация то точно слетит!
Если на консолидированную полетит без CCC с других, где еще не добавлено, то чтобы не отвалилось, достаточно добавить в конец alter table-а null, или сделать default. Или о чем вопрос?

Не данные будут лететь только в одном направлении->в удалённую,Я имею ввиду что я просто не уверен в мощности самого подхода.Или можно с уверенностью сказать что если в режиме ретрансляции добавить столбец,то он после отправки реплики на удалённую добавится и на удалённой.???
И еще вопрос,Если всё удачно пройдёт,то есть столбец в удалённой добавится,нужно ли будет перестартовать подписку в изменённой публикации???
...
Рейтинг: 0 / 0
Режим ретрансляции
    #35328363
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) То что ты отправил в режиме ретрансляции включается в очередь сообщений идущих к подписчикам. Последовательность обработки в очереди отслеживается. Т.е. по идее данные, которые идут в удаленную после добавления столбца в удаленную через ретрансляцию не применятся в удаленной пока столбец не добавиться.
2) Посмотри грамотный совет от Сергея. Это на случай когда приходит сообщение при отправке которого не учитывалось наличие столбца, а на принимающей стороне он уже есть.
...
Рейтинг: 0 / 0
Режим ретрансляции
    #35328703
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Вам надо только добавить колонку в таблицу, то PASSTHROUGH FOR SUBSCRIPTION ... это не то.
PASSTHROUGH FOR SUBSCRIPTION ... применяется для абсолютно других целей.
Внимательнее читайте Коран :)

Есть два варианта:
Если добавляемое поле в таблице не существует в консолидированной базе:

PASSTHROUGH FOR <remote user1>, ... <remot user n>
go
-- комманда добавления колонки или др.
ALTER TABLE dba.blah_blah_blah ADD new_field char(4) NULL
go
PASSTHROUGH STOP
go

Если добавляемое поле в таблице уже существует в консолидированной базе:

PASSTHROUGH ONLY FOR <remote user1>, ... <remot user n>
go
-- комманда добавления колонки или др.
ALTER TABLE dba.blah_blah_blah ADD new_field char(4) NULL
go
PASSTHROUGH STOP
go

Если колонка не добавится, то слетят те комманды UPDATE и INSERT, которые юзают эту колонку.
На системном уровне репликация не слетит, но с данными могут быть траблы, особенно если эта колонка применяется в ключах.
...
Рейтинг: 0 / 0
Режим ретрансляции
    #35329352
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, еще, забыл ...

PASSTHROUGH FOR ... запускать только на консолидированной базе.

При вызове PASSTHROUGH FOR ... комманды DDL выполнятся в консолид. базе и так-же разошлются по удаленным

При вызове PASSTHROUGH ONLY FOR ... комманды DDL НЕ будут выполнятся в консолид. базе, а только разошлются по удаленным

По умолчанию комманды DDL не попадают в репликацию.
...
Рейтинг: 0 / 0
Режим ретрансляции
    #35329426
Andreas_84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJBДа, еще, забыл ...

PASSTHROUGH FOR ... запускать только на консолидированной базе.

При вызове PASSTHROUGH FOR ... комманды DDL выполнятся в консолид. базе и так-же разошлются по удаленным

При вызове PASSTHROUGH ONLY FOR ... комманды DDL НЕ будут выполнятся в консолид. базе, а только разошлются по удаленным

По умолчанию комманды DDL не попадают в репликацию.


Спасибо за очень дельные обяснения,

А все эти изменения в удалённой сразу же должны произойти после введения команд на консолидированой??
Или если у меня на серваке шедулер настроен так что dbremote запускается каждые полчаса то столбец должен появиться в удалённой сразу же после следующего срабатывания шедулера???
Догадываюсь что второе,но всёже решил переспросить.....
Зарание спасибо!!
...
Рейтинг: 0 / 0
Режим ретрансляции
    #35329501
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andreas_84А все эти изменения в удалённой сразу же должны произойти после введения команд на консолидированой??Да.
Andreas_84Или если у меня на серваке шедулер настроен так что dbremote запускается каждые полчаса то столбец должен появиться в удалённой сразу же после следующего срабатывания шедулера???Нет, к расписанию сессий это не относится. DDL команда пойдет в составе обычного сообщения, где-нибудь в его середине.
На консолидированной работа идет примерно так:
Код: plaintext
1.
2.
3.
4.
-- предыдущий сеанс репликации завершен
insert into sometable values( 1 , 2 );
alter sometable add f3 char( 4 );
insert into sometable values( 3 , 4 , 'aaaa');
-- начинается следующий сеанс репликации
И эти три команды должны быть переданы на удаленную базу, и в том же порядке чтобы не порушить данные.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Режим ретрансляции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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