Ручное восстановление индексов
Материал из GedeminWiki
Иногда приходится восстанавливать базу без активации индексов. Чтобы вручную не активировать каждый индекс можно сделать следующее.
Ручное восстановление индексов
Данные SQL-запросы вернут список запросов для восстановления неактивных индексов. Этот список можно скопировать в Script Executive IBExpert'а или выполнить через isql.
Запрос для поиска неактивных индексов по первичным ключам:
SELECT ' ALTER INDEX ' || c.rdb$index_name || ' ACTIVE; ' FROM rdb$indices r JOIN rdb$relation_constraints c ON r.rdb$index_name = c.rdb$index_name WHERE r.rdb$index_inactive > 0 AND c.rdb$constraint_type = 'PRIMARY KEY' AND COALESCE(r.rdb$system_flag, 0) = 0
Запрос для поиска неактивных индексов по внешним ключам:
SELECT ' ALTER INDEX ' || c.rdb$index_name || ' ACTIVE; ' FROM rdb$indices r JOIN rdb$relation_constraints c ON r.rdb$index_name = c.rdb$index_name WHERE r.rdb$index_inactive > 0 AND c.rdb$constraint_type = 'FOREIGN KEY' AND COALESCE(r.rdb$system_flag, 0) = 0
Запрос для поиска оставшихся неактивных индексов:
SELECT ' ALTER INDEX ' || r.rdb$index_name || ' ACTIVE; ' FROM rdb$indices r WHERE r.rdb$index_inactive > 0 AND COALESCE(r.rdb$system_flag, 0) = 0