Здравствуйте!
Диспозиция такая - есть локальная база, на которой проведены доработки (создан раздел, сделаны детали, связи с другими разделами). Все прекрасно работает.
Задача - накатить обновления на копию этой же базы до всех обновлений.
Использую TSMergeServices.
Делаю выгрузку такой строкой:
TSMergeServices.exe /cfg="xxx" /usr="Supervisor" /pwd="xxx" /opr="Extract" /dir="zzz" /upddb="true"
Получаю папку с выгруженными сервисами и таблицами
Натравливаю утилиту на конфигурацию с оригинальной базой
TSMergeServices.exe /cfg="xxx_PLAIN" /usr="Supervisor" /pwd="xxx" /opr="Load" /dir="zzz" /upddb="true"
Залетают сервисы, все ок начинают писаться таблицы, но на некоторых таблицах выпадает в ошибку:
Error: Unknown error occured 'Invalid column name 'SiteID'.
Invalid column name 'SiteID''
SiteID - это новая колонка в ряде таблиц, созданная для связи с записями нового раздела.
Немного непонятно как тогда происходит апдейт структуры базы данных или я какой ключ не увидел?
Нравится
Попробуйте вручную загрузить в последовательности: tbl_*,sq_*,ds_*,scr_*,wnd_*
Воспроизводится ли данная проблема?
Пробовал с ключом /usimask="tbl_*" и с /code="tbl_*" – не получилось, обрабатывался какждый раз 0 сервисов.
В итоге запустил с typecode=”Table”, прошла загрузка таблиц, началась запись в базу и проблема воспроизвелась на первой же таблице, в которой присутствует поле SiteID. Точнее можно сказать, проблема воспроизвелась на первой же таблице, загружаемая версия которой отлична от той, что есть в базе.
Утилита от сборки 3.3.2.195.
Возможно проблема связана с порядком сохранения таблиц. Проверьте пожалуйста загружена ли уже основная таблица раздела, на которую ссылается колонка SiteID. Если нет, сначала загрузите её, а уже потом уже загрузите все остальные сервисы.
Окей, сделал следующее:
так как SiteID содержит GUID, которые живут в tbl_sites (основная таблица нового раздела), то на чистой копии поднятой из бекапа базы первым шагом, через Администратор, создал папки как эта таблица лежит в базе-источнике, и тут попытался через администратор же её загрузить, на что поймал следующую ошибку:
Сообщение об ошибке: При сохранении объекта 'Custom\Workspaces\Sites\General\Main Grid\tbl_Sites' в базу данных, возникла ошибка:Object 'Relation.ParentField' is not assigned
Посмотрел блок в xml файле:
[code]-
[/code]
Загрузил tbl_SitesType, после чего tbl_Sites загрузилась нормально.
Но все равно после этого при запуске TSMergeServices как доходит до первой же таблицы с колонкой SiteID выдает прежнюю ошибку.
Строка в xml файле tbl_Contracts (на ней вываливается) выглядит так:
[code] [/code]
причем в блоке Relations нет таблицы tbl_Sites, может где-то тут проблема?
Есть некие особенности работы с TSMergeServices, так как данная утилита не соблюдает порядок загрузки сервисов таблиц, советую руководствоваться правилом: если в конфигурацию загружаются новые таблицы и/или добавляются связи на новые таблицы (как со старыми, так и с новыми таблицами) рекомендуется сначала загрузить в конфигурацию таблицы вручную, в нужном порядке (сначала – независимые, потом те, которые на них ссылаются), а уже после этого использовать TSMergeServices.