репликация и грабли с identity

Sherman
Дата: 09.12.2002 09:31:42
Милостивые государи, есть следующая проблема - при merge репликации, натурально, возникает конфликт из-за попытки записи уже имеющегося в таблице identity.
Вопрос- как, не дропая таблицу и не теряя данных в ней, добавить в описание этого поля примечание, что оно-таки not for replication?
Типовой вариант- export data, create sql script, drop table, отредактить скрипт, create table, import data .... а как еще?
Заранее признателен за помощь
JAN
Дата: 09.12.2002 14:34:31
not for replication + использовать разный шаг identity на серверах
Julius
Дата: 09.12.2002 17:47:53
Можно убить все подписки, если репликация уже работает, исключить таблицу из списка статей, поправить ее на сервере публикации, снова включить в список статей, перестроить по ней схему счетчика, снова создать подписчиков и пусть себе все рарботает.
Правда, тут возможна проблема с передачей данных всех таблиц подписчикам. Тогда надо изменить для всех таблиц порядок их создания из Snapshot на подписчиках в том смысле, чтобы данные в них сохранялись при наличии таковых таблиц в базе данных подписки (вкададка Snapshot в окне свойств статьи).
Лучше, пока предложить нечего. Надо отметить, что вся эта операция довольно рискованная, я бы все же убил таблицу для собственного спокойствия - расхлебывать потом меньше...
dkstranger
Дата: 09.12.2002 17:50:09
2Sherman
А мы по многим причинам (в т.ч. и из соображений репликации)
вообще отказались от identity
Julius
Дата: 09.12.2002 19:26:30
dkstranger:

А чем его (identity) заменили, если не секрет? GUID что-ли? или на клиенте id генерите - неужели удобнее и лучше?
Что такого плохого в identity было, хотя бы даже и в репликации, что вы от него отказались?
Александр Гладченко
Дата: 09.12.2002 22:56:32
Я бы тоже от него отказался, если бы только мог... хуже вредителя для организации репликации в действующей среде нет. В форуме не раз уже перечисляли все его недостатки.
Sherman
Дата: 10.12.2002 14:01:18
Благодарю всех ответивших, отдельное спасибо Julius.
Проблема решилась методом исключения из публикации и alter table drop <identity field>; alter table add <identity field> identity (newseed, increment) NOT FOR REPLICATION. Слава всем богам, конкретное соответствие значений identity-столбца строкам таблицы меня не волновало.