Архивирование и восстановление системных объектов БД
Некоторые системные таблицы при сохранении таблиц, независимо от опции, устанавливающей необходимость сохранять данные из таблиц, сохраняются без содержащихся в них данных. К этим таблицам относятся системные таблицы: $$$PROC
, $$$TRIG
, $$$PRCD
, SERVERS
, $$$REPL
.
Данные, содержащиеся в этих таблицах, после восстановления в новую БД (или в существующую), теряют свой смысл. Для сохранения триггеров и процедур необходимо:
-
выбрать три таблицы
$$$PROC
,$$$TRIG
,$$$PRCD
, выбрать триггеры и процедуры, подлежащие сохранению; -
сохранить таблицы, к которым относятся триггеры (достаточно установить переключатель Сохранять зависимые объекты (рис. 29);
Рисунок 29. Настройка сохранения (восстановления) триггеров и хранимых процедур
-
в дереве объектов выбрать процедуры и триггеры (рис. 30):
Рисунок 30. Выбор сохраняемых триггеров и хранимых процедур
-
нажать Запуск – утилита произведет анализ зависимых объектов и приступит к сохранению (рис. 31):
Рисунок 31. Протокол сохранения триггеров и хранимых процедур
Как видно, необходимые таблицы были сохранены, включая таблицу
TR_DATA2
, от которой зависит триггерTR_INSTEADUPDROW
.
Для восстановления этих процедур и триггеров необходимо:
-
сначала восстановить таблицы, от которых зависят триггеры, таблицы
$$$PROC
,$$$TRIG
,$$$PRCD
(впрочем, их можно и создать путем запуска SQL-файлаsystab.sql
в программе inl – кому как нравится); -
только после этого восстанавливать сами процедуры и триггеры. Утилита lhbx сама, как правило, это делает при восстановлении в необходимом порядке, если для восстановления выбраны все объекты, содержащиеся в файле архива.
То же самое относится и к восстановлению описания серверов и правил репликации, содержащихся в таблицах
SERVERS
,$$$REPL
. Т.е. необходимо совместно сохранять эти таблицы и объектыservers
иreplication rules
.