Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

Документация
Функция htRepairTableLog

htRepairTableLog - Восстановить журнал изменений таблицы

Назначение:

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

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

Элементы в файле .HDN содержат описатели операций над таблицей (добавление, удаление или модификация) и ссылки на новые тела записей, размещенные в .HDR.

При операции восстановления журнала изменений создается копия старых файлов журнала (появятся файлы .~DN и .~DR). Восстанавливаемый журнал пишется в файлы .$DN и .$DR, которые после успешного завершения операции переименовываются в файлы .HDN и .HDR соответственно.

Прототип:

int HTAPI htRepairTableLog(
  char far	*fpTableName,	/* Имя таблицы (можно без расширения) */
  char far	*fpReadPswd,	/* Пароль доступа на чтение */
  char far	*fpWritePswd, 	/* Пароль доступа на запись */
  long		gItemCnt	/* Число элементов к восстановлению */
);

Параметры

fpTableName задает имя (полное или частичное) таблицы. Имя можно задавать без расширения.
fpReadPswd задает пароль доступа на чтение. Если не нужен, можно задать NULL или пустую строку "".
fpWritePswd задает пароль доступа на запись. Если не нужен, можно задать NULL или пустую строку "".
gItemCnt задает число элементов в журнале, подлежащих восстановлению. Параметр может принимать отрицательное, нулевое и положительное значения.
0 делается попытка восстановить те элементы журнала, сведения о которых имеются в его оглавлении. Это основной режим восстановления.
< 0 Отрицательные значения параметра трактуются как число восстанавливаемых элементов из файла .HDN. Будет предпринята попытка восстановить заданное количество элементов из .HDN, при этом "лишние" значения в .HDR будут отброшены.
> 0 Положительные значения параметра трактуются как число восстанавливаемых элементов из файла .HDR. Будет предпринята попытка восстановить заданное количество элементов из .HDR, при этом недостающие элементы из .HDN будут реконструированы, а "лишние" - отброшены.

Результат:

0 при успешном завершении
отрицательное число код ошибки

Пример.

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

int	rc;
THANDLE	hTable;
char	TabName[] = "damaged";
rc = htTableOpen( TabName, NULL, NULL, TAB_PRIVATE, &hTable );
if( rc < 0 && rc == -HT_ERR_LOG_CORRUPTED )
	htRepairTableLog( TabName, NULL, NULL, 0 );
 . . .