Формат представления объектов БД
Ниже описаны форматы представления некоторых объектов БД в диагностических сообщениях и протоколах утилиты и 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;