|
|
|
Режим ретрансляции
|
|||
|---|---|---|---|
|
#18+
Ребята,мне предстоит добавить столбец char(4) в таблицу,которая учавствует в репликации. Вообщем мануалы почитал,там это описано как вродебы предусмотренные изменения структуры (разрешённые).Хотелось бы от кого-нибудь узнать каки возможные проблемы могут появиться если я на консолидированной базе сделаю так: Код: plaintext 1. 2. 3. 4. CCC -столбец Что делать,если он в удалённой базе не добавится???Репликация то точно слетит! Вообщем кто это делал,отзовитесь))) пожалуйста!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2008, 12:22 |
|
||
|
Режим ретрансляции
|
|||
|---|---|---|---|
|
#18+
Andreas_84... на консолидированной базе... ... Что делать,если он в удалённой базе не добавится???Репликация то точно слетит! Если на консолидированную полетит без CCC с других, где еще не добавлено, то чтобы не отвалилось, достаточно добавить в конец alter table-а null, или сделать default. Или о чем вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2008, 12:39 |
|
||
|
Режим ретрансляции
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов Andreas_84... на консолидированной базе... ... Что делать,если он в удалённой базе не добавится???Репликация то точно слетит! Если на консолидированную полетит без CCC с других, где еще не добавлено, то чтобы не отвалилось, достаточно добавить в конец alter table-а null, или сделать default. Или о чем вопрос? Не данные будут лететь только в одном направлении->в удалённую,Я имею ввиду что я просто не уверен в мощности самого подхода.Или можно с уверенностью сказать что если в режиме ретрансляции добавить столбец,то он после отправки реплики на удалённую добавится и на удалённой.??? И еще вопрос,Если всё удачно пройдёт,то есть столбец в удалённой добавится,нужно ли будет перестартовать подписку в изменённой публикации??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2008, 12:57 |
|
||
|
Режим ретрансляции
|
|||
|---|---|---|---|
|
#18+
1) То что ты отправил в режиме ретрансляции включается в очередь сообщений идущих к подписчикам. Последовательность обработки в очереди отслеживается. Т.е. по идее данные, которые идут в удаленную после добавления столбца в удаленную через ретрансляцию не применятся в удаленной пока столбец не добавиться. 2) Посмотри грамотный совет от Сергея. Это на случай когда приходит сообщение при отправке которого не учитывалось наличие столбца, а на принимающей стороне он уже есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2008, 13:17 |
|
||
|
Режим ретрансляции
|
|||
|---|---|---|---|
|
#18+
Если Вам надо только добавить колонку в таблицу, то 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, которые юзают эту колонку. На системном уровне репликация не слетит, но с данными могут быть траблы, особенно если эта колонка применяется в ключах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2008, 14:44 |
|
||
|
Режим ретрансляции
|
|||
|---|---|---|---|
|
#18+
Да, еще, забыл ... PASSTHROUGH FOR ... запускать только на консолидированной базе. При вызове PASSTHROUGH FOR ... комманды DDL выполнятся в консолид. базе и так-же разошлются по удаленным При вызове PASSTHROUGH ONLY FOR ... комманды DDL НЕ будут выполнятся в консолид. базе, а только разошлются по удаленным По умолчанию комманды DDL не попадают в репликацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2008, 17:17 |
|
||
|
Режим ретрансляции
|
|||
|---|---|---|---|
|
#18+
PaulJBДа, еще, забыл ... PASSTHROUGH FOR ... запускать только на консолидированной базе. При вызове PASSTHROUGH FOR ... комманды DDL выполнятся в консолид. базе и так-же разошлются по удаленным При вызове PASSTHROUGH ONLY FOR ... комманды DDL НЕ будут выполнятся в консолид. базе, а только разошлются по удаленным По умолчанию комманды DDL не попадают в репликацию. Спасибо за очень дельные обяснения, А все эти изменения в удалённой сразу же должны произойти после введения команд на консолидированой?? Или если у меня на серваке шедулер настроен так что dbremote запускается каждые полчаса то столбец должен появиться в удалённой сразу же после следующего срабатывания шедулера??? Догадываюсь что второе,но всёже решил переспросить..... Зарание спасибо!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2008, 17:35 |
|
||
|
Режим ретрансляции
|
|||
|---|---|---|---|
|
#18+
Andreas_84А все эти изменения в удалённой сразу же должны произойти после введения команд на консолидированой??Да. Andreas_84Или если у меня на серваке шедулер настроен так что dbremote запускается каждые полчаса то столбец должен появиться в удалённой сразу же после следующего срабатывания шедулера???Нет, к расписанию сессий это не относится. DDL команда пойдет в составе обычного сообщения, где-нибудь в его середине. На консолидированной работа идет примерно так: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2008, 17:50 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35328703&tid=2011561]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
409ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 227ms |
| total: | 723ms |

| 0 / 0 |
