Перекомпиляция всех хранимых процедур

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
inspirion
Сообщения: 33
Зарегистрирован: 23 фев 2005, 11:32

Перекомпиляция всех хранимых процедур

Сообщение inspirion » 16 окт 2007, 19:24

Подскажите, в IbExpert есть такая функция - Перекомпиляция всех харнимых процедур, которая очень сильно помогает, после произведения обновлений в метаданных.

Можно ли каким то образом через компандуню строку, либо FireBird либо IbExpert выполнить туже самую операцию(Перекомпиляция всех харнимых процедур)?

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 16 окт 2007, 20:08

Выгрузить скрипт всей базы и запускать его.

inspirion
Сообщения: 33
Зарегистрирован: 23 фев 2005, 11:32

Сообщение inspirion » 16 окт 2007, 20:10

В базе уже есть данные, и в нее вносяться только изменения в методанные(структуру), поэтому нужно именно изменить текущую.

Slavik
Сообщения: 115
Зарегистрирован: 17 янв 2007, 11:52

Re: Перекомпиляция всех хранимых процедур

Сообщение Slavik » 16 окт 2007, 22:01

IBEScript (exe/dll/IBExpert): ibec_RecompileProcedure и ibec_RecompileTrigger

inspirion
Сообщения: 33
Зарегистрирован: 23 фев 2005, 11:32

Сообщение inspirion » 22 окт 2007, 11:27

Подскажите каким образом можно этим воспользоваться?
Это через IBScript можно использовать?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 22 окт 2007, 11:48

тебе же привели чем и как пользоваться.
по большому счету вызывать такие вещи из своей программы достаточно проблематично. В том смысле, что как ты будешь обрабатывать ошибку, если одна из процедур или триггеров при "перекомпиляции" выдаст ошибку?

Соответственно вопрос - а зачем тебе это надо вне IBExpert???

inspirion
Сообщения: 33
Зарегистрирован: 23 фев 2005, 11:32

Сообщение inspirion » 22 окт 2007, 11:53

Да как раз мне нужно это делать не в соей программе.
В идеале я бы хотел запускать скрипт и что бы в конце выполнялась перекомпиляция.
Вопрос:
1.Можно ли выполнить эту компбинацию из *.sql при выполнении через IbScript? или в командной строке?
2. Или ее нужно выполнять в IBExpert?

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 22 окт 2007, 11:55

inspirion писал(а):Это через IBScript можно использовать?
Нет.
Не путай компонент IBScript и модуль IBEScript, дополняющий и входящий в поставку IBExpert.

Slavik
Сообщения: 115
Зарегистрирован: 17 янв 2007, 11:52

Сообщение Slavik » 22 окт 2007, 12:01

inspirion писал(а):Подскажите каким образом можно этим воспользоваться?
Заходишь на сайт IBExpert в раздел документации (её можно и скачать) и изучаешь IBEScript.
inspirion писал(а):Это через IBScript можно использовать?
Уже ответили. Но можно из своей проги вызывать IBEScript.dll, а из командного файла - IBEScript.exe.

P.S. Читай доку, экспериментируй, и будешь знать что можно, а что нельзя.

inspirion
Сообщения: 33
Зарегистрирован: 23 фев 2005, 11:32

Сообщение inspirion » 22 окт 2007, 12:06

Ок. Спасибо, буду рабираться

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 22 окт 2007, 13:12

гм, я все-таки хочу понять, зачем тебе "перекомпиляция всего". Обычно она делается чтобы
1. перевести blr из одного диалекта в другой
2. обнаружить ошибки при перекомпиляции зависимых процедур

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

Ответить