По материалам статьи Alexander
Chigrik: Undocumented
SQL Server 2000 System Tables Перевод Виталия Степаненко
В этой статье я хочу рассказать вам о недокументированных
системных таблицах, которые поставляются вместе с SQL Server
2000. Эти таблицы используются некоторыми системными хранимыми
процедурами, и большинство из них хранится в базе данных
master (только системные таблицы sysfiles1, sysproperties и
sysfulltextnotify хранятся в каждой базе данных).
syscursorcolumns
Хранит список столбцов курсора. Эта таблица находится в
базе данных master. Таблица syscursorcolumns используется
системной хранимой процедурой sp_describe_cursor_columns для
получения свойств столбцов результирующего набора данных
серверного курсора.
Название столбца |
Тип данных |
Описание |
cursor_handle |
int |
Уникальный идентификатор курсора в пределах сервера.
|
column_name |
sysname, nullable |
Имя столбца. NULL, если столбец был указан без
использования выражения AS. |
ordinal_position |
int |
Относительное положение столбца. Первый столбец имеет
значение 1. Значение для любого скрытого столбца - 0.
|
column_characteristics_flags |
int |
Битовая маска, позволяющая увидеть информацию,
хранящуюся в DBCOLUMNFLAGS в OLE DB.
Может содержать следующие значения:
1 = Bookmark
2 = столбец с фиксированной длиной
4 = столбец может содержать значение NULL
8 = Row versioning
16 = изменяемый столбец (значение устанавливается для
столбцов курсора без выражения FOR UPDATE, у курсора
может быть только один такой столбец).
|
column_size |
int |
Наибольший возможный размер для хранения значения в
этом столбце. |
data_type_sql |
smallint |
Числовое обозначение типа данных SQL Server столбца.
|
column_precision |
tinyint |
Максимальная точность столбца, аналогично значению
bPrecision в OLE DB. |
column_scale |
tinyint |
Количество знаков справа от запятой у типов данных
numeric и decimal, аналогично значению bScale в OLE DB.
|
order_position |
int |
Если столбец является частью сортировки
результирующего набора данных, то хранится положение
столбца в ключе сортировки относительно самого левого
столбца. |
order_direction |
varchar(1), nullable |
A = столбец входит в ключ сортировки и отсортирован
по возрастанию.
D = столбец входит в ключ сортировки и отсортирован
по убыванию.
NULL = столбец не входит в ключ сортировки.
|
hidden_column |
smallint |
Если значение 0, то столбец виден в списке выбора.
Значение 1 зарезервировано для использования в будущем.
|
columnid |
int |
ID базового столбца. Если столбец результирующего
набора данных построен на основании выражения, то
columnid равен -1. |
objectid |
int |
ID базовой таблицы столбца. Если столбец
результирующего набора данных построен на основании
выражения, то objectid равен -1. |
dbid |
int |
ID базы данных, в которой находится базовая таблица
столбца. Если столбец результирующего набора данных
построен на основании выражения, то dbid равен -1.
|
dbname |
sysname, nullable |
Имя базы данных, в которой находится базовая таблица
столбца. Если столбец результирующего набора данных
построен на основании выражения, то dbname равно NULL.
|
syscursorrefs
Хранит по одной записи на каждый серверный курсор. Эта
таблица находится в базе данных master и содержит имя курсора,
область видимости курсора (локальный или глобальный), и
идентификатор курсора. Таблица syscursorrefs используется
системными хранимыми процедурами sp_describe_cursor,
sp_describe_cursor_columns, sp_describe_cursor_tables и
sp_cursor_list для получения имени курсора, его области
видимости и идентификатора.
Название столбца |
Тип данных |
Описание |
reference_name |
sysname, nullable |
Имя, используемое для ссылок на курсор. |
cursor_scope |
tinyint |
1 = локальный курсор
2 = глобальный курсор
|
cursor_handl |
int |
Уникальный идентификатор курсора в пределах сервера.
|
syscursors
Хранит свойства серверного курсора. Эта таблица находится в
базе данных master. Таблица syscursors table используется
системной хранимой процедурой sp_describe_cursor для получения
свойств серверного курсора и системной хранимой процедурой
sp_cursor_list для получения свойств открытых в настоящий
момент серверных курсоров.
Название столбца |
Тип данных |
Описание |
cursor_handle |
int |
Уникальный идентификатор курсора в пределах сервера.
|
cursor_name |
sysname, nullable |
Имя курсора. |
status |
int |
Те же значения, что выдаются системной функцией
CURSOR_STATUS:
1 = курсор открыт. Если курсор типа insensitive,
static или keyset, то он имеет по крайней мере одну
строку. Если курсор динамический, то результирующий
набор данных имеет ноль или больше строк.
0 = курсор открыт, но не имеет ни одной строки.
Динамические курсоры никогда не возвращают это значение.
-1 = курсор закрыт.
-2 = курсор, присвоенный переменной, не существует.
Применяется только к курсорным переменным. Этот случай
возможен, например, если возвращаемый параметр присвоил
переменной курсор, а хранимая процедура закрыла курсор
перед возвратом управления из этой процедуры.
-3 = курсор или курсорная переменная не существуют,
или курсорная переменная не имеет курсора.
|
model |
tinyint |
1 = Insensitive (или static) 2 = Keyset 3 =
Dynamic 4 = Fast Forward |
concurrency |
tinyint |
1 = Read-only 2 = Scroll locks 3 = Optimistic
|
scrollable |
tinyint |
0 = Forward-only 1 = Scrollable |
open_status |
tinyint |
0 = курсор закрыт 1 = курсор открыт |
cursor_rows |
decimal(10,0) |
Количество строк в результирующем наборе данных.
|
fetch_status |
smallint |
Статус последней выборки из курсора:
0 = выборка произошла успешно.
-1 = произошла ошибка при выборке или выборка вышла
за границы курсора.
-2 = строка выборки не найдена.
-9 = ни одной выборки из курсора еще не было
произведено.
|
column_count |
smallint |
Количество столбцов в результирующем наборе данных.
|
row_count |
decimal(10,0) |
Количество строк, измененных последней операцией над
курсором. |
last_operation |
tinyint |
Последняя операция, выполненная над курсором:
0 = ни одна операция не была выполнена над курсором.
1 = OPEN
2 = FETCH
3 = INSERT
4 = UPDATE
5 = DELETE
6 = CLOSE
7 = DEALLOCATE
|
syscursortables
Хранит базовые таблицы серверного курсора. Эта таблица
хранится в базе данных master. Таблица syscursortables
используется системная хранимая процедура
sp_describe_cursor_tables для получения базовых таблиц
серверного курсора.
Название столбца |
Тип данных |
Описание |
cursor_handle |
int |
Уникальный идентификатор курсора в пределах сервера.
|
table owner |
sysname, nullable |
ID владельца таблицы. |
table_name |
sysname, nullable |
Имя базовой таблицы. |
optimizer_hints |
smallint |
Битовая маска, состоящая из:
1 = блокировка уровня строки (ROWLOCK)
4 = блокировка уровня страницы (PAGELOCK)
8 = блокировка уровня таблицы (TABLOCK)
16 = эксклюзивная блокировка уровня таблицы
(TABLOCKX)
32 = блокировка изменения (UPDLOCK)
64 = отсутствие блокировки (NOLOCK)
128 = опция быстрого чтения первых записей
(FASTFIRST)
4096 = опция повторяемого чтения, когда используется
с курсором (HOLDLOCK)
|
lock_type |
smallint |
Тип блокировки, которая выполняется явно или неявно
над каждой базовой таблицей курсора. Возможные значения:
0 = нет блокировки
1 = разделяемая блокировка
3 = блокировка обновления |
server_name |
sysname, nullable |
Имя присоединенного сервера, на котором находится
таблица. Имеет значение NULL, если используются
OPENQUERY или OPENROWSET. |
objectid |
int |
ID таблицы. Имеет значение 0, если используются
OPENQUERY или OPENROWSET. |
dbid |
int |
ID базы данных, которой принадлежит таблица. Имеет
значение 0, если используются OPENQUERY или OPENROWSET.
|
dbname |
sysname, nullable |
Имя базы данных, которой принадлежит таблица. Имеет
значение NULL, если используются OPENQUERY или
OPENROWSET. |
sysfiles1
Хранит по одной записи на каждый файл в базе данных. Каждая
база данных содержит системную таблицу sysfiles1.
Column name |
Data type |
Description |
status |
int |
Для внутреннего использования. |
fileid |
smallint |
Идентификационный номер файла, уникальный в базе
данных. |
name |
nchar(128) |
Логическое имя файла. |
filename |
nchar(260) |
Имя физического устройства, включая полный путь к
файлу. |
sysfulltextnotify
Хранит полнотекстовые примечания каталога. Таблица
sysfulltextnotify используется системными хранимыми
процедурами sp_fulltext_database, sp_fulltext_catalog,
sp_fulltext_tableand и sp_fulltext_column. Каждая база данных
содержит системную таблицу sysfulltextnotify.
Название столбца |
Тип данных |
Описание |
tableid |
int |
ID таблицы. |
rowinfo |
smallint |
Для внутреннего использования. |
ftkey |
varbinary(482) |
Полнотекстовое значение ключа.
|
syslocks
Хранит информацию об активных блокировках. Эта таблица
оставлена только для совместимости, она была заменена на
syslockinfo.
Название столбца |
Тип данных |
Описание |
id |
int |
ID таблицы. |
dbid |
smallint |
ID базы данных. |
page |
int |
Номер страницы. |
type |
smallint |
Тип блокировки:
1 = эксклюзивная блокировка таблицы
2 = разделяемая блокировка таблицы
3 = эксклюзивная блокировка намерения (выполнит
страничную блокировку указанных страниц)
4 = разделяемая блокировка намерения
5 = эксклюзивная блокировка страницы
6 = разделяемая блокировка страницы
7 = блокировка обновления страницы (заменяется на
эксклюзивную блокировку, если страница действительно
модифицируется)
8 = эксклюзивная блокировка экстента
9 = блокировка обновления экстента
11 = блокировка следующего экстента
12 = блокировка предыдущего экстента
К любому из вышеперечисленных типов блокировок может
быть добавлено значение 256 (0x100). Это означает, что
блокировка заблокировала другого пользователя.
257 = блокирование эксклюзивной блокировки таблицы
265 = блокирование блокировки обновления экстента
|
spid |
smallint |
ID процесса, инициировавшего блокировку.
|
sysproperties
Хранит расширенные свойства, которые могут быть добавлены
для различных объектов в базе данных. Расширенные свойства
являются новой особенностью SQL Server 2000. Расширенные
свойства могут быть использованы для хранения заголовка
таблицы, представления или столбца, для хранения маски ввода
данных в столбец, для хранения правил форматирования для
отображения данных в столбце, и т.д. Таблица sysproperties
используется системными хранимыми процедурами sp_droptype,
sp_validatepropertyinputs, sp_addextendedproperty,
sp_updateextendedproperty, sp_dropextendedproperty и
sp_revokedbaccess для управления расширенными свойствами, и
системной функцией fn_listextendedproperty для получения
значения существующего расширенного свойства. Каждая база
данных содержит системную таблицу sysproperties.
Название столбца |
Тип данных |
Описание |
id |
int |
ID расширенного свойства. |
smallid |
smallint |
ID типа данных, или ID столбца, или ID пользователя,
или ID индекса. |
type |
tinyint |
Тип расширенного свойства. |
name |
sysname |
Установленное пользователем имя расширенного
свойства. |
value |
sql_variant, nullable |
Значение расширенного свойства. Может содержать до
7,500 байт данных. |
sysxlogins
Хранит каждую учетную запись пользователя Windows NT или
имя группы и каждый логин SQL Server. Эта таблица хранится в
базе данных master.
Название столбца |
Тип данных |
Описание |
srvid |
smallint, nullable |
ID сервера. |
sid |
varbinary(85), nullable |
Идентификатор безопасности. |
xstatus |
smallint |
Для внутреннего использования. |
xdate1 |
datetime |
Дата, когда был добавлен логин. |
xdate2 |
datetime |
Дата, когда логин был изменен. |
name |
sysname, nullable |
Логин. |
password |
varbinary(256), nullable |
Пароль пользователя (может иметь значение NULL).
|
dbid |
smallint |
ID базы данных. |
language |
sysname, nullable |
Язык пользователя по умолчанию. |
isrpcinmap |
smallint, nullable |
Для внутреннего использования. |
ishqoutmap |
smallint, nullable |
Для внутреннего использования. |
selfoutmap |
smallint, nullable |
Для внутреннего использования.
|
[В начало]
|