Недокументированные системные таблицы SQL Server 2000

ПУБЛИКАЦИИ  

По материалам статьи 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

Для внутреннего использования.

[В начало]


Перевод: Виталия Степаненко  2004г.

ПУБЛИКАЦИИ

Скачать электронную карту Ангарска бесплатно
Сайт управляется системой uCoz