Шрифт:
Интервал:
Закладка:
* В Windows похожая история. Редактор по умолчанию определяется переменной окружения EDITOR. В текущих версиях Windows это Notepad.exe, но вы можете установить его в любой текстовый редактор. В очень старых версиях Windows редактор по умолчанию, вероятно, был mep.exe или edit.exe.
Запуск isql
Для запуска isql откройте командную строку и перейдите в каталог Firebird /bin вашей инсталляции Firebird на сервере или клиенте. Наберите следующую команду в подсказке командной строки и нажмите клавишу <Enter>:
isql [имя-базы-данных] [-u[ser] <имя-пользователя> -pas[sword] <пароль>]
Имя базы данных не является обязательным. Если вы его указываете, то isql будет открывать соединение с указанной базой данных. Это должен быть либо полный путь к базе данных из того места, где вы находитесь, либо правильный алиас в версии 1.5 и более поздних.
Переключатели -user <имя-пользователя> и -password <пароль> являются необязательными, когда вы запускаете isql без указания связи с базой данных, и требуются, когда вы запускаете isql в удаленном режиме. Если переменные окружения ISC USER и ISC PASSWORD не установлены, имя пользователя и пароль требуются при старте isql локально.
Запуск программы в POSIX:
./isql
а в Windows:
isql
./isql -user TEMPDBA -password osoweary [в POSIX] isql -user TEMPDBA -password osoweary [в Windows]
запускается программа и сохраняются заданные имя пользователя и пароль без их идентификации.
isql hotchicken:/data/mydatabase.fdb -user TEMPDBA -password osoweary
Указанная команда запускает программу на клиенте Windows и соединяется с базой данных на сервере POSIX, предоставляя верные на сервере имя пользователя и пароль.
./isql /data/mydatabase.fdb
запускает локально программу на сервере Linux и соединяется с базой данных в предположении, что переменные окружения ISC_USER и ISC_PASSWORD установлены и доступны вашему пользовательскому профилю пользователя в Linux.
Если вы подключились к базе данных при запуске isql, вы увидите консоль, похожую на рис. 37.1. Конкретный вид окна командной строки зависит от операционной системы. Командная строка isql одинакова для всех платформ.
Рис. 37.1. Консоль, отображаемая при запуске isql с подключением к базе данных
Если вы не ввели путь к базе данных или имя пользователя и пароль не определены на сервере, вы увидите нечто, похожее на рис. 37.2.
Рис. 37.2. Консоль, отображаемая при запуске isql без подключения к базе данных
Если были ошибки в командной строке или возникли проблемы с идентификацией пользователя, вы можете также увидеть сообщения об ошибке. Если вы видите подсказку SDQ>, значит вы находитесь в командной строке isql и можете из нее соединяться с базой данных.
Соединение с базой данных
Для соединения с базой данных из подсказки SQL> командной строки isql используйте следующий пример в качестве образца синтаксиса. Обратите внимание, что синтаксис внутри командной строки isql отличается от синтаксиса, используемого при передаче параметров соединения и системной командной строки.
CONNECT 'HOTCHICKEN:L:DATAEXAMPLESEMPLOYEE.FDB'
USER 'SYSDBA' PASSWORD 'masterkey';
соединяет с удаленным или локальным сервером с именем HOTCHICKEN.
CONNECT 'L:DATAEXAMPLESEMPLOYEE.FDB';
соединяет с локальным сервером, на котором isql уже знает ваше имя пользователя и пароль - либо потому что вы правильно ввели их при запуске isql, либо потому что isql выполняется в командной строке, которая может видеть переменные окружения ISC_USER и ISC_PASSWORD.
CONNECT 'HOTCHICKEN:EMP3' USER 'SYSDBA' PASSWORD 'masterkey';
эквивалентно первому примеру в Firebird версии 1.5 и выше; при этом используется алиас, хранящийся в файле aliases.conf на сервере, который указывает путь.
CONNECT 'L:/DATA/EXAMPLES/EMPLOYEE.FDB';
эквивалентно второму примеру. В isql наклонная черта может быть прямой и обратной.
Имя сервера и путьВ Windows не путайте имена серверов и имена совместно используемых дисков. Сеть клиент-сервер не распознает разделяемые диски и каталоги (mapped drive, shared folder). Идентификатор диска всегда должен указывать на фактическую букву жесткого диска или раздела на серверной машине.
Идентификация пользователяНезависимо от того, соединились ли вы из командной строки или сделали это внутри командной строки isql, идентификация пользователя будет ошибочной, если сервер не распознает имя пользователя или пароль. Например, на рис. 37.3 показано, что вы увидите, если оператор CONNECT будет ошибочным.
Рис. 37.3. Ошибочная идентификация пользователя
Если такое произошло, дважды проверьте, правильно ли вы задали имя пользователя и пароль, и в правильном ли регистре введен пароль. Пароль чувствителен к регистру, а имя пользователя нет.
Символ терминатора
Терминатором оператора по умолчанию является точка с запятой (;), которая используется во всех примерах в этой главе. Вы можете изменить этот терминатор любым другим символом или группой символов посредством команды SET TERM[INATOR]. Например, чтобы заменить его на "!!", используйте следующий оператор:
SQL> SET TERM !!;
SQL>
Продолжение строки подсказки
Если вы нажмете клавишу <Enter>, забыв завершить оператор терминатором, вы увидите продолжение подсказки CON> вместо подсказки isql SQL>:
SQL> SHOW DATABASE
CON>
Если это было ошибкой, просто наберите терминатор и опять нажмите клавишу <Enter>. Причем вы можете использовать эту возможность, чтобы сделать ваш текст более читаемым, например:
SQL> CREATE TABLE ATABLE (
CON> ID INTEGER NOT NOLL,
CON> DATA VARCHAR(20),
CON> DATE_ENTERED DATE
CON> DEFAULT CURRENT_DATE
CON> );
SQL>
! ! !
СОВЕТ. Одна из причин применения возможности продолжения - это то, что вы можете использовать команду OUTPUT для помещения введенного вами в isql текста в файл. Поскольку вывод сохраняется точно в таком же виде, как вы вводите данные, все ваши пробельные отступы будут сохранены. Многие пользователи Firebird используют isql в качестве единственного редактора скриптов!
. ! .
Транзакции в isql
Управление транзакциями в isql отличается в зависимости от того, вводите ли вы оператор DDL, команду SHOW или другие виды операторов.
Когда isql стартует, она запускает транзакцию с уровнем изоляции SNAPSHOT (параллельный) с установкой разрешения блокировок WAIT. Если вы выполняете не операторы DDL и не команды SHOW, транзакция продолжает оставаться текущей, пока вы не выдадите оператор COMMIT или ROLLBACK.
Вы можете стартовать явную транзакцию, подтвердив текущую транзакцию, и выдав оператор SET TRANSACTION. Например, для старта транзакции READ COMMITTED NO WAIT введите:
SQL> COMMIT;
SQL> SET TRANSACTION
CON> NO WAIT READ COMMITTED;
При завершении вашей задачи просто выдайте как обычно оператор COMMIT. Следующий оператор вернет систему в конфигурацию по умолчанию.
Операторы DDLКаждый раз, когда вы выдаете оператор DDL, isql стартует для него специальную транзакцию и немедленно ее подтверждает после того, как вы нажимаете клавишу <Enter>. Сразу после этого стартует новая транзакция. Вы можете изменить автоматическое поведение, выдав команду SET AUTODDL OFF из подсказки SQL до начала выполнения ваших операторов DDL:
SQL> SET AUTODDL OFF;
Чтобы опять включить режим автоматического подтверждения операторов DDL, введите:
SQL> SET AUTODDL ON;
Для переключения между режимами включено/выключено существует сокращенная версия команды:
SQL> SET AUTO;
Команды SHOWКоманды SHOW в isql запрашивают данные из системных таблиц. Когда вы вызываете команду SHOW, isql подтверждает существующую транзакцию и стартует новую с уровнем изоляции READ COMMITTED. Это гарантирует, что вы всегда видите самые последние изменения метаданных, как только они будут изменены.
Поиск в буфере строк
Начиная с версии 1.5 и выше, isql позволяет вам отыскивать строки в буфере способом, похожим на возможность readiine на платформах POSIX. Используйте клавиши <Т> (стрелка вверх) и <i> (стрелка вниз) для "прокручивания" буфера isql по одной строке за раз для поиска копий строк, которые вы вводили ранее.
Использование предупреждений
По умолчанию isql выдает предупреждения при некоторых условиях, например:
* операторы, не выполняющие действий;
* двусмысленная спецификация соединений в Firebird 1.0.x (в версии 1.5 и выше это вызовет исключение);
* выражения, которые дадут различные результаты в различных версиях Firebird;
* вызовы API, которые будут изменены в будущих версиях;
* когда база данных переведена в состояние SHUTDOWN.
Для переключения режима выдачи предупреждений в процессе выполнения сессии интерактивной isql используйте SET WARNINGS или сокращенный вариант SET WNG.
Обработка исключений
Ошибки в isql обрабатываются тем же образом, что и приложении DSQL. isql отображает сообщение об ошибке, содержащее переменную SQLCODE и текст сообщения из массива состояния Firebird, как показано на рис. 37.4.
Рис. 37.4. Пример сообщения об ошибке в isql
- Delphi. Учимся на примерах - Сергей Парижский - Программирование
- Сделай видеоигру один и не свихнись - Слава Грис - Программирование / Руководства
- Психбольница в руках пациентов - Алан Купер - Программирование