Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Репликация проблемы после изменения типа данных поля таблицы  [new]
black_sql
Member

Откуда:
Сообщений: 52
Доброго времени суток!

Помогите с решением проблемы.
Суть проблемы такая:

1. Существует издатель 10.0.5500.0
2. База данных со структурой таблиц
t (ID INT)
t1 (ID_PARENT INT, ID NVARCHAR)
t2 (ID_PARENT INT)
3. Есть публикация с динамическими фильтрами
t
INNR JOIN t1 ON t.ID = t1.ID_PARENT
INNR JOIN t2 ON t1.ID = CONVERT(NVARCHR, t2.ID_PARENT)
4. Возникла необходимость выполнить ALTER TABLE T1 меняющий тип поля с INT на NVARCHAR
5. После выполнения ALTER когда появились данные которые не могут быть представлены в INT
merge agent стал выдавать ошибку конвертации в Int
6. После разбора полетов было найдено системное представление
MSmerge_bivw_696BAA8E00C6465F81A0586A8D8806B7,
где поле t1.ID по прежнему INT
7. В триггерах репликации на UPD и DEL
есть текст где выполняется вставка в таблицу MSmerge_bivw_696BAA8E00C6465F81A0586A8D8806B7
если его закомментировать то синхронизация выполняется но данные по этой таблице не синхронизируются

Вопрос как решить проблему, выполнить ALTER системного представления или другие методы?

Обычными средствами выполнить ALTER не получилось,
пробовал пересоздать объекты репликации с помощью sp_vupgrade_mergeobjects без результатов,
таблица пересоздалась но стеме же полями
25 фев 13, 08:14    [13974355]     Ответить | Цитировать Сообщить модератору
 Re: Репликация проблемы после изменения типа данных поля таблицы  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
black_sql
Возникла необходимость выполнить ALTER TABLE T1 меняющий тип поля с INT на NVARCHAR
После этого динамический фильтр стал невалидным (в части предиката t.ID = t1.ID_PARENT). Приведите его в порядок с помощью sp_changemergefilter и все должно встать на свои места.
25 фев 13, 15:27    [13977421]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить