Главная ]
9.Работа с сервисами
Программирование
Базы данных



9.Работа с сервисами

Эта глава охватывает InterBase API функции сервисов. Это средство позволяет Вам писать приложения, которые контролируют и управляют серверами InterBase и базами данных. Задачи, которые Вы можете выполнять с этими API, включают:

- Выполнение задачи обслуживания базы данных типа резервного копирования и восстановление, остановка и перезапуск, сборка "мусора", и сканирование на предмет испорченных структур данных

- Создание, изменение, и удаление пользователе в базе данных защиты

- Управление программными сертификатами

- Запросы информации о конфигурации баз данных и сервера

9.Работа с сервисами

Этот раздел описывает основные концепции сервисных API, использование буфера параметров сервисов, и методы для подключение и отключение к Service Manager

9.1.1.Общая информация

Сервисные API это группа функций в клиентской библиотеке (gds32.dll  в Windows, libgds.a в UNIX/Linux). Сервисные API включены в утилиты gbak, gfix, gsec, gstatи iblicense, но естественно не все.

Все серверы InterBase включают средство называемое Менеджером Сервисов(Services Manager). API Сервисы позволяют клиентским приложениям делать запросы к Менеджеру Сервисов сервера InterBase, и Менеджер Сервисов исполняет задачи. Сервер может быть локальный (на том же самом главном компьютере что и ваше приложение), или удаленный (на другом главном компьютере на сети). API Сервисы предлагают те же самые особенности когда подключены к локальному или удаленному серверу InterBase.

Семейство API Сервисов состоит из  четырех функции:

Isc_service_attach () инициализирует связь с указанным Services Manager

Isc_service_start() вызывает сервисную задачу

Isc_service_query() запрашивает информацию, или задачу из Services Manager

Isc_service_detach () отключает от Services Manager

9.1.2.Использование буфера параметров сервисов

Вы можете настраивать ваше приложение для подключения к Services Manager,  создавая буфер параметров сервисов (SPB), заполняя его нужными свойствами, и передать адрес SPB в isc_service_attach () или в другие функции в группе API Сервисов. Например, SPB может содержать имя пользователя и пароль для подключения к удаленному серверу.

SPB это символьный массив объявленный в вашем приложении. Он содержит следующие элементы:

1.Первый байт включающий информацию о версии формата  SPB, это константа isc_spb_version.

2. Второй байт определяет число версии котороя определена как макрос,и как рекомендуемая версия SPBдля каждого релиза InterBase.

3.Далее идут один или несколько кластеров байт, каждый кластер описывает один параметр.

Кластера в свою очередь состоят из следующих частей

1.    Первый байт определяет что за параметр будет описан в кластере.

2.    Второй байт определяет длину описываемого параметра

3.    Дальше идет столько байт сколько определил  второй байт кластера.

9.1.3.Пример заполнения буфера для имени пользователя

1 char spb_buffer[128], *spb =spb_buffer;

2 *spb++ = isc_spb_version;

3 *spb++ = isc_spb_current_version;

4 *spb++ = isc_spb_user_name;

5 *spb++ = strlen("SYSDBA");

6 strcpy(spb, "SYSDBA");

7 spb += strlen("SYSDBA");

Все числа представлены в нашем любимом универсальном формате.

9.2.Подключение к Services Manager с помощью isc_service_attach()

9.3.Используйте isc_service_attach() для подключения к удаленному IB Services Manager

9.4.Вы можете применять локальное или удаленное имя сервиса для определения к какому хосту будем подключаться.

Пример:

char *user= "SYSDBA",

*password ="masterkey", /* see security tip below */

*service_name= "jupiter:service_mgr";

ISC_STATUSstatus[20];

isc_svc_handle*service_handle = NULL;

spb_buffer[128],*spb = spb_buffer;

unsignedshort spb_length;

*spb++ =isc_spb_version;

*spb++ =isc_spb_current_version;

*spb++ =isc_spb_user_name;

*spb++ =strlen(user);

strcpy(spb,user);

spb +=strlen(user);

*spb++ =isc_spb_password;

*spb++ =strlen(password)

strcpy(spb,password);

spb +=strlen(password);

spb_length= spb - spb_buffer;

if(isc_service_attach(status, 0, service_name,

&service_handle,spb_length, spb_buffer))

{

isc_print_status(status);

exit(1);

}

9.5.Отключение от Service Manager c помощью isc_service_detach()

isc_service_detach(status,&service_handle);

 

<< Назад ] Содержание ] Далее >> ]

 

Дизайн: Piton Alien
Rambler's Top100 Рейтинг@Mail.ru
Сайт создан в системе uCoz