Ну выскажусь еще немного :-) Тоже общие мысли.

06.12.2010 18:04, Victor Reshetnyak пишет:
2) Для недопущения пересечения других параллельных репликаций, создать
таблички содержащие инф. о том кто, каким инструментом, когда начал, когда
закончил, на какой стадии операция.

Тут есть проще решение на самом деле. За репликацию конкретной таблицы отвечает конкретная ХП. Соответственно кто мешает в самом начале ХП поставить запрос к MON$STATEMENT на наличие уже работающей ХП? По поводу того кто и что начал... Не думаю что есть смысл усложнять операцию. Не самый лучший способ сделать тяжелую задачу.

4) Завел таблицу примерно "в какой очередности выполнять действия", прямо
скриптами в блобах.
Одна ХП - одна таблица (или связка таблиц). Спасет от очередности. Если перенос очередно-зависим - сделать вызов ХП из ХП для упрощения можно.

3) EXECUTE STATEMENT-ами переносил данные, таблица за таблицей, в более
расширенном варианте с изменением структур таблиц, триггеров, генераторы,
ХП.
Проверено, хотя можно было бы и не проверять конечно :-) Если делать запрос к структурам и переносить по одному полю.. Короче про скорость молчу :-) Забраковал. Даже близко не устраивает.

  - что делать когда скрипт может выполнится с ошибками (нарушения разного
рода ограничений, и т.д.)?
Если переносить связанные таблицы то можно завести таблицу где будут хранится записи с ошибками при выгрузке.

  - в процессе репликации сессия оборвалась, либо даже не удалась, ХП
вывалится без возможности отработать ситуацию.
Повтор спасет ситуацию :-) Просто можно выкачивать обновление по ключевому полю, а запрос делать с учетом сортировки по этому полю.

Так вот как обработать виолейшн в ХП не имею представления, может у
разработчиков на этот счет есть что сказать. Ну и приложения универсального
нет, к каждой базе особенный подход.
Да есть там что-то. Но на самом деле чтобы выскочила ошибка при полной идентичности таблиц... Ну я не знаю, тут надо сильно постараться наверное :-)


--
Андрей Кручинин
www.med-zakaz.ru
Для особо извращенных - http://мед-заказ.рф :-)

Ответить