Шрифт:
Интервал:
Закладка:
! ! !
ВНИМАНИЕ! Убедитесь, что каждый скрипт заканчивается символом перевода строки и, по меньшей мере, одной пустой строкой.
. ! .
Шаг 2: выполнение скриптаИспользуйте команду INPUT в сессии isql, или кнопку Выполнить (Execute), или аналогичную в вашем инструменте управления базой данных.
isql в POSIX:
SQL> INPUT /data/scripts/myscript.sql;
isql в Win32:
SQL> INPUT d:datascriptsmyscript.sql;
Шаг 3: просмотр результата и подтверждение изменений базы данныхРазные инструменты Firebird и версии isql возвращают различную информацию в случае ошибочного выполнения скрипта при наличии неверной команды. Средства,
добавленные после Firebird 1.0, обеспечивают более подробные сообщения об ошибках скрипта, чем предыдущие версии.
Как создавать скриптыВы можете создавать скрипты DDL различными способами, включая следующие:
* в сессии интерактивной isql с использованием команды OOTPOT для передачи серий операторов DDL в файл;
* в текстовом редакторе ASCII, который выполняет переводы строки в соответствии с правилами командной строки операционной системы, где будет выполняться скрипт DDL;
* используя специализированные инструменты редактора скриптов, которые доступны среди инструментов администратора для Firebird сторонних разработчиков. См. список в приложении 5;
* используя инструмент CASE, который может выводить скрипты DDL в соответствии с соглашениями Firebird (InterBase).
Вы можете использовать любой текстовый редактор для создания файла скрипта SQL, если выходной формат файла является полным текстом (ASCII) и символы завершения строки соответствуют правилам командной строки вашей операционной системы:
* в Windows терминатор строки - символ возврата каретки плюс символ перевода строки (ASCII 13, за которым следует ASCII 10);
* в Linux/UNIX терминатор строки - символ перевода строки, или "новая строка" (ASCII 10);
* в Mac OS X терминатор строки- новая строка (ASCII 10), а в родных Macintosh это возврат каретки (ASCII 13).
! ! !
СОВЕТ. См. также в isql возможность извлечения метаданных, которая может быть полезной для извлечения схемы БД в формате скрипта.
. ! .
Некоторые инструменты редактирования имеют возможность сохранять данные в различных текстовых форматах. Это может быть полезным, например, при создании скриптов, совместимых с Linux, на машине Windows. При этом убедитесь, что вы используете редактор, который сохраняет только полный текст ASCII.
Подготовленный файл скрипта схемы должен начинаться с оператора CREATE DATABASE или, если база данных уже существует, с оператора CONNECT (включая имя пользователя и пароль в апострофах). Эти операторы задают базу данных, с которой оперирует файл скрипта. За ключевыми словами CREATE или CONNECT должна следовать полная спецификация файла базы данных в апострофах: полный абсолютный путь и имя файла базы данных.
! ! !
ПРИМЕЧАНИЕ. Не используйте алиасы в скриптах, которые создают базы данных.
. ! .
Пример:
SET SQL DIALECT 3 ;
CREATE DATABASE 'd:databasesMyDatabase.fdb' PAGE_SIZE 8192
DEFAULT CHARACTER SET ISO8859_1 USER 'SYSDBA' PASSWORD 'masterkey';
или
CONNECT 'd:databasesMyDatabase.gdb' USER 'SYSDBA' PASSWORD 'masterkey';
Подтверждение операторов в скриптеОператоры DDLОператоры в скриптах DDL могут подтверждаться одним или несколькими способами:
* включением в соответствующих местах скрипта операторов COMMIT, чтобы гарантировать доступность новых объектов базы данных всем последующим зависящим от них операторам;
* включением в начало скрипта следующего оператора:
SET AUTODDL ON;
Для отмены автоматического подтверждения операторов DDL в скрипте isql используйте:
SET AUTODDL OFF;
Ключевые слова ON и OFF необязательны. Сокращение SET AUTO может быть использовано в качестве двухстороннего переключателя. Для большей ясности рекомендуется использовать SET AUTODDL с явным указанием ключевых слов ON и OFF.
Автоматическое подтверждение isqlЕсли вы выполняете свой скрипт в isql, то изменения базы данных операторами определения данных (DDL)- например, операторами CREATE и ALTER- автоматически подтверждаются по умолчанию. Это означает, что другие пользователи базы данных видят изменения сразу после выполнения оператора DDL.
Некоторые инструменты обработки скриптов намеренно отключают такое поведение автоматического подтверждения, потому что оно может усложнить отладку. Убедитесь, что вы понимаете поведение того инструмента сторонних разработчиков, который вы используете для обработки скриптов.
Операторы DMLИзменения базы данных, выполненные операторами манипулирования данными (DML) - INSERT, UPDATE и DELETE, - не станут постоянными, пока не будут подтверждены. Явно включите операторы COMMIT в ваш скрипт для подтверждения изменений DML.
Для отмены всех изменений базы данных после последнего COMMIT используйте ROLLBACK. Подтвержденные изменения не могут быть отменены.
Выполнение скриптовСкрипты DDL могут быть выполнены в сессии интерактивного isql с использованием команды INPUT, как было описано ранее. Многие инструменты сторонних разработчиков позволяют выполнять и даже интеллектуально отлаживать скрипты в среде графического интерфейса.
Управление скриптами вашей схемы
Хранение хорошо организованных множеств скриптов, которые точно отражают самое последнее состояние ваших метаданных, является полезной практикой, которая прекрасно удовлетворяет большинству надежных высококачественных систем. Очень рекомендуется использовать в скриптах подробные комментарии при архивировании всех версий скриптов в версии управляющей системы.
Восстановление после сбоевНаиболее очевидная цель такой практики - "возврат к последней точке" при восстановлении после сбоев. Если беда идет за бедой - база данных разрушена, а резервные копии потеряны - метаданные можно восстановить из скриптов. Сохранившиеся данные из другой невосстанавливаемой базы данных могут быть восстановлены специалистами и помещены в базу данных.
Управление разработкойСкорее всего, несколько разработчиков будут создавать базу данных в течение ее жизненного цикла. Известно, что разработчики ненавидят написание системной документации! Хранение аннотированных записей скриптов о каждом изменении базы данных- включая те, которые использовались интерактивно через isql или инструмент сторонних разработчиков, - это безболезненное и безопасное решение, которое работает во всех случаях.
Извлечение метаданныхНекоторые инструменты администратора для Firebird, включая isql, могут выделять метаданные из базы данных и сохранять их в виде файла скрипта. Об использовании isql см. разд. "Извлечение метаданных" главы 37. Так как извлечение метаданных является удобным помощником в вашем использовании скриптов, существует множество причин трактовать эти инструменты как "ассистенты" и взять себе за правило вручную поддерживать ваши главные скрипты схемы.
* Firebird не хранит комментарии при сохранении определений метаданных. Многие системные таблицы имеют столбец BLOB, обычно называемый RDB$DESCRIPTION, в котором может сохраняться в виде единого целого часть предоставленного пользователем описания. При извлечении метаданных инструментом isql этот столбец не выводится, хотя некоторые инструменты сторонних разработчиков его поддерживают.
* Все инструменты извлечения метаданных генерируют только текущие метаданные. Не существует истории изменений - даты, причины или авторы изменений.
* Некоторые инструменты, включая isql, генерируют метаданные в неверной последовательности с точки зрения зависимостей, делая скрипты невозможными в использовании для перегенерации базы данных без их корректировки. Подобная задача может быть утомительной или даже невозможной в зависимости от того, насколько выполняющий ее человек хорошо знает метаданные.
* Даже умеренно увеличивающаяся в размерах база данных может иметь огромное количество объектов, особенно когда проектирование системы приводит к интенсивному использованию модулей встроенного кода. Слишком большие скрипты часто завершаются с ошибками по причине различных ограничений в выполнении или в ресурсах. Большие, плохо организованные скрипты также сбивают с толку и раздражают при использовании их в качестве документации.
Создание скриптов вручнуюАвтор жестко пропагандирует поддержку полностью аннотированных скриптов схемы вручную и разделение их на несколько отдельных файлов. Пример набора скриптов в табл. 14.2 описывает и регенерирует базу данных с именем leisurestore.fdb.
Таблица 14.2. Пример набора скриптов для схемы
Файл
Содержимое
leisurestore_01 .sql
Оператор CREATE DATABASE; определения CREATE DOMAIN, CREATE GENERATOR и CREATE EXCEPTION
leisurestore_02.sqi
Все операторы CREATE TABLE, включая ограничения UNIQUE; операторы ALTER TABLE добавляют все первичные ключи в виде именованных ограничений PRIMARY KEY
- Delphi. Учимся на примерах - Сергей Парижский - Программирование
- Сделай видеоигру один и не свихнись - Слава Грис - Программирование / Руководства
- Психбольница в руках пациентов - Алан Купер - Программирование