13 авг. 2011 г.
Применение SELECT FROM SELECT
5 авг. 2011 г.
Логирование и отображение исключений
Для этого в gedemin.exe должна быть залинкована отладочная информация. Ежедневно собираются и выкладываются на сайт два архива -- Гедымин с отладочной информацией и без.
Вместе с выводом на экран информация об исключениях заносится в таблицу GD_JOURNAL и может быть просмотрена в окне Просмотр событий (раздел Исследователь - Сервис - Администратор). Отфильтровать нужные записи можно по полю source, которое будет содержать слова Exception или Macros Exception.
Код Exceptional Magic, отвечающий за обработку исключений, включается в проект через символ условной компиляции EXCMAGIC_GEDEMIN. К сожалению, данный продукт не является open source. Поэтому вы не найдете его в публичных исходниках Гедымина. При необходимости, Вы можете самостоятельно купить исходный код Exceptional Magic. Выложить файлы в папку Gedemin\Log, определить вышеуказанный символ и перекомпилировать весь проект.
2 авг. 2011 г.
Обновление сервера Firebird 2.5 из снэпшота
На сайте firebirdsql.org регулярно обновляются текущие "snapshot" сборки сервера, включающие все последние изменения. Файлы Windows версии 2.5.х можно скачать отсюда. Архивы доступны в формате Zip и 7-Zip, для 32-х и 64-х битных версий ОС. Буквы PDB в имени архива означают, что он содержит сервер, откомпилированный с отладочной информацией.
Обновить работающий сервер на предприятии можно следующим образом:
- Делаем архивную копию базы данных и сохраняем ее в надежном месте.
- Скачиваем архив с текущей сборкой.
- Все пользователи закрывают у себя Гедымин. Если Гедымин работает, а соответствующий пользователь недоступен (вышел покурить, отошел на обед и т.п.), то:
- в окне Подключенные пользователи последовательно отключаем активные коннекты или в SQL редакторе выполняем команду DELETE FROM mon$attachments.
- если не помогло: на сервере отключаем сетевое соединение или просто выдергиваем кабель локальной сети (не 220В!) из компьютера. Ждем 4-5 минут, пока не отвалятся все коннекты. Если используется версия сервера классической архитектуры, то смотрим в Диспетчер задач, пока там не останется только один процесс fb_inet_server.
Первый вариант предпочтительнее, но практика показывает, что на крупном предприятии трудно оповестить всех пользователей о том, что не следует загружать Гедымин. В результате, после обрыва соединения пользователь пытается запустить программу снова и снова. В таком случае, второй вариант, с выдергиванием сетевого кабеля, остается единственным решением.
- в окне Подключенные пользователи последовательно отключаем активные коннекты или в SQL редакторе выполняем команду DELETE FROM mon$attachments.
- Убедившись, что все пользователи отключены, заходим в Управление компьютером, Службы и останавливаем Firebird.
Ни в коем случае нельзя снимать задачу fb_inet_server или fbserver через Диспетчер задач. Такое действие может привести к повреждению файла базы данных (особенно, если отключен режим принудительной записи). Если все же в процессе работы сервера пришлось произвести принудительную перезагрузку, выключение или остановку задачи, то после восстановления работоспособности, первым делом следует проверить файл базы данных командой gfix.
- Заменяем файлы в папке C:\Program Files\Firebird содержимым архива. Кроме файла security2.fdb! Его не трогаем.
Если вы случайно затерли security2.fdb, то придется подключиться Гедымином под учетной записью Administrator и в разделе Исследователь-Сервис-Администратор-Пользователи, на панели инструментов выбрать команду Пересоздать всех пользователей.
- Cкачиваем отсюда актуальную библиотеку GUDF.DLL (в соответствии с разрядностью вашей операционной системы) и заменяем ею существующий файл в подкаталоге UDF.
- Запускаем службу.
- Восстанавливаем сетевое соединение.
После обновления сервера рекомендуется провести бэкап-рестор базы данных и обновить клиентскую библиотеку -- файл fbclient.dll.