Формат представления объектов БД

Ниже описаны форматы представления некоторых объектов БД в диагностических сообщениях и протоколах утилиты и SQL-запросы для получения логического имени объекта по его системному идентификатору.

Таблица #< nnn >

Идентификация системной или пользовательской таблицы БД. Параметр < nnn > – системный номер таблицы в БД. Для получения реального имени таблицы (например, для #32) используется запрос:

select '"'||rtrim($$$USR.$$$S34)||'"."'
||rtrim($$$SYSRL.$$$S13)||'"'
from $$$SYSRL, $$$USR
where $$$SYSRL.$$$S12=$$$USR.$$$S31
and $$$SYSRL.$$$S11=32;

| "SYSTEM"."TYPEINFO"|

Файл < тип > #< номер >

Идентификация файла таблицы БД. Параметр < тип > – символьное обозначение типа файла, < номер > – порядковый номер файла этого типа.

Реальное имя файла (в каталоге БД) является конкатенацией трех значений: системного номера таблицы, номера типа файла и порядкового номера файла.

Номера типов файлов:

  • 0 – файл индексов;

  • 1 – файл данных;

  • 2 – файл BLOB-данных.

Для получения реального имени файла (например, имя второго файла данных для таблицы с системным номером #32) используется запрос:

select '32.' ||'1' ||'2';

Столбец #< nnn >

Идентификация столбца таблицы БД. Параметр < nnn > – порядковый номер столбца в таблице. Для получения полного имени столбца таблицы (например, столбца #3 для таблицы #101) используется запрос:

select '"' || rtrim($$$USR.$$$S34) || '"."'
|| rtrim($$$SYSRL.$$$S13) ||'"."'
||rtrim($$$ATTRI.$$$S23 )
|| '"' from $$$SYSRL, $$$USR,$$$ATTRI
where $$$SYSRL.$$$S12=$$$USR.$$$S31
and $$$SYSRL.$$$S11=$$$ATTRI.$$$S21
and $$$SYSRL.$$$S11=101
and $$$ATTRI.$$$S22=3;

| "SYSTEM"."AUTO"."BODYTYPE"|

Составной индекс #< nnn >

Идентификация составного индекса таблицы БД. Параметр < nnn > – порядковый номер составного индекса в указанной таблице БД. Для получения имени составного индекса таблицы (например, составного индекса #4 для таблицы #189) используется запрос:

select $$$S23 as "Name",
CAST(CASE WHEN GetBits (GetLong($$$S24,64),0,9,1)=1
  THEN 'Primary'
ELSE
  CASE WHEN GetBits(GetLong($$$S24,64),0,10,1)=1 THEN 'Unique'
  END END)
AS CHAR (20) as "Type",
GetByte ($$$S24,5) as "Columns Count"
from SYSTEM.$$$SYSRL, SYSTEM.$$$ATTRI, SYSTEM.$$$USR
where $$$S11=$$$S21
and $$$S12=$$$S31
and $$$S32=0
and $$$S22=-4
and $$$S11 = 189;
|NAME | TYPE  | COLUMNS COUNT |
|key4 |   | 3 |

Бит #< nnn >

Идентификация бита в указанной перед этим странице файла.

ROWID #< nnn >

Идентификация строки указанной перед этим таблицы БД.

Для получения строки таблицы (например, строки с ROWID #100 для таблицы #189) используется запросы:

получить имя таблицы (см. объект Таблица #< nnn >)
select '"'||rtrim($$$USR.$$$S34)||'"."'
||rtrim($$$SYSRL.$$$S13)||'"'
from $$$SYSRL, $$$USR
where $$$SYSRL.$$$S12=$$$USR.$$$S31
and $$$SYSRL.$$$S11=189;

затем строки таблицы:
select * from < имя таблицы > where rowid=100;

Страница #< nnn >

Идентификация страницы указанного перед этим файла.

Доступ к указанной странице осуществляется средствами файловой системы ОС.

Запись #< nnn > (смещение < mmm >)

Идентификация смещения в записи указанной перед этим странице файла.

Доступ к указанному смещению в записи страницы осуществляется средствами файловой системы ОС.

Узел #< nnn >

Идентификация узла в B-дереве файла индексов.

Распознается только утилитой testdb.

Ограничение целостности #< nnn >

Идентификация ограничения целостности таблицы БД. Параметр < nnn > – порядковый номер ограничения целостности в указанной таблице БД.

Процедура #< nnn >

Идентификация хранимой процедуры. Параметр < nnn > – системный идентификатор процедуры в БД. Для получения имени процедуры (например, имени процедуры с системным идентификатором #2) используется запрос:

select '"'||rtrim($$$USR.$$$S34)||'"."'||rtrim($$$PROC.$$$NAME)||'"'
  from $$$PROC, $$$USR
 where $$$PROC.$$$OWNER=$$$USR.$$$S31
   and $$$PROC.$$$ID=2
   and $$$PROC.$$$NAME<  >'';

| "SYSTEM"."Сальдо"|

Триггер #< nnn >

Идентификация триггера. Параметр < nnn > – системный идентификатор триггера в БД. Для получения имени триггера (например, имени триггера с системным идентификатором #5) используется запрос:

select '"'||rtrim($$$USR.$$$S34)||'"."'||rtrim($$$TRIG.$$$NAME)||'"'
  from $$$TRIG, $$$USR
 where $$$TRIG.$$$OWNER=$$$USR.$$$S31
   and $$$TRIG.$$$ID=5;

| "SYSTEM"."Before insert on TAB1"|

Кодировка #< nnn >

Идентификация кодировки. Параметр < nnn > – системный идентификатор кодировки в БД. Для получения имени кодировки (например, имени кодировки с системным идентификатором #3) используется запрос:

select NAME
  from $$$CHARSET
 where IDENT=3;

| KOI8-R|

Трансляция #< nnn >

Идентификация трансляции. Параметр < nnn > – системный идентификатор трансляции в БД. Для получения имени трансляции (например, имени трансляции с системным идентификатором #5) используется запрос:

select NAM
  from $$$TRANSL
 where IDENT=5;
| fromCP1251toKOI8-R|

Группа

  • Устройство #< nnn >

  • Группа #< nnn >

  • Уровень #< nnn >

  • Станция #< nnn >

идентифицируют объекты БД, используемые в средствах защиты информации от несанкционированного доступа. Параметр < nnn > – системный идентификатор объекта в БД. Для получения имени объекта (например, имени объекта с системным идентификатором #5) используются соответственно следующие запросы:

select $$$NAME
  from $$$DEVICE
 where $$$ID=5;

select $$$NAME
  from $$$GROUP
 where $$$ID=5;

select $$$NAME
  from $$$LEVEL
 where $$$ID=5;

select $$$SNAME
  from $$$STATION
 where $$$STATIONID=5;