Системные базовые таблицы

Применимо к:SQL Server Управляемый экземпляр SQL Azure

Системные базовые таблицы — это основные таблицы, в которых хранятся метаданные определенной базы данных. База данных master является особенной в этом отношении, так как она содержит некоторые дополнительные таблицы, которые не найдены ни в одной из других баз данных. Эти таблицы содержат устойчивые метаданные, областью которых является весь сервер.

Важно!

Системные базовые таблицы используются только в ядро СУБД SQL Server и не используются для общего использования клиентами. Они подвержены изменению, и совместимость не гарантируется.

Метаданные системной базовой таблицы

Участник, имеющий разрешение CONTROL, ALTER или VIEW DEFINITION в базе данных, может просматривать метаданные базовой таблицы системы в представлении каталога sys.objects . Участник также может разрешать имена и идентификаторы объектов системных базовых таблиц с помощью встроенных функций, таких как OBJECT_NAME и OBJECT_ID.

Чтобы привязаться к системной базовой таблице, пользователь должен подключиться к экземпляру SQL Server с помощью выделенного подключения администратора (DAC). При попытке выполнить запрос SELECT из системной базовой таблицы без DAC-соединения выдается сообщение об ошибке.

Важно!

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

Системные базовые таблицы

В следующей таблице перечислены и описаны все системные базовые таблицы в SQL Server.

Базовая таблица Description
sys.sysschobjs Существует в каждой базе данных. Каждая строка представляет объект базы данных.
sys.sysbinobjs Существует в каждой базе данных. Содержит по строке на каждую сущность компонента Service Broker в базе данных. К компонентам Service Broker относятся:

Тип сообщения

контракт службы;

Сервис

Для списка имен и типов используется фиксированная двоичная сортировка.
sys.sysclsobjs Существует в каждой базе данных. Содержит по строке на каждую сущность с общими свойствами, включая следующие:

Сборка

устройство резервного копирования;

Полнотекстовый каталог

Функция секционирования

Схема секционирования

файловая группа;

Ключ обфускации

Схема
sys.sysnsobjs Существует в каждой базе данных. Содержит по строке на каждую сущность, действующую в пространстве имен. Эта таблица используется для хранения сущностей XML-коллекции.
sys.syscolpars Существует в каждой базе данных. Содержит по строке на каждый столбец таблицы, представления или табличной функции. Cодержит также по строке на каждый параметр процедуры или функции.
sys.systypedsubobjs Существует в каждой базе данных. Содержит по строке на каждую типизированную вложенную сущность. К этой категории относятся только параметры функции секционирования.
sys.sysidxstats Существует в каждой базе данных. Содержит по строке на каждый индекс или статистику для таблиц и индексированных представлений.

Примечание. Каждый индекс (кроме кучи) связан со статистикой, которая имеет то же имя, что и индекс.
sys.sysiscols Существует в каждой базе данных. Содержит по строке на каждый материализованный столбец индекса или статистики.
sys.sysscalartypes Существует в каждой базе данных. Содержит по строке на каждый системный или пользовательский тип данных.
sys.sysdbreg Существует только в базе данных master . Содержит по строке на каждую зарегистрированную базу данных.
sys.sysxsrvs Существует только в базе данных master . Содержит по строке на каждый локальный, связанный или удаленный сервер.
sys.sysrmtlgns Эта системная базовая таблица существует только в базе данных master . Содержит по строке на каждое сопоставление удаленного имени входа. Используется для сопоставления имен входа, предположительно поступивших с соответствующего сервера, с действительным локальным именем входа.
sys.syslnklgns Существует только в базе данных master . Содержит по строке на каждое сопоставление связанных имен входа. Сопоставления связанных имен входа используются для удаленного вызова процедур или распределенных запросов, идущих от локального сервера к соответствующему связанному серверу.
sys.sysxlgns Существует только в базе данных master . Содержит по строке на каждый зарегистрированный участник на уровне сервера.
sys.sysdbfiles Существует в каждой базе данных. Если dbid столбца равен нулю, строка представляет файл, принадлежащий этой базе данных. В базе данных master dbid столбца может быть ненулевой. В этом случае строка представляет главный файл.
sys.sysusermsg Существует только в базе данных master . Каждая строка представляет сообщение об ошибке, заданное пользователем.
sys.sysprivs Существует в каждой базе данных. Содержит по строке на каждое разрешение на уровне базы данных или сервера.

Примечание. Разрешения на уровне сервера хранятся в базе данных master .
sys.sysowners Существует в каждой базе данных. Каждая строка соответствует участнику базы данных.
sys.sysobjkeycrypts Существует в каждой базе данных. Содержит по строке на каждый симметричный ключ, шифр и криптографическое свойство, связанное с объектом.
sys.syscerts Существует в каждой базе данных. Содержит по строке на каждый сертификат в базе данных.
sys.sysasymkeys Существует в каждой базе данных. Каждая строка представляет асимметричный ключ.
sys.ftinds Существует в каждой базе данных. Содержит по строке на каждый полнотекстовый индекс в базе данных.
sys.sysxprops Существует в каждой базе данных. Содержит по строке на каждое расширенное свойство.
sys.sysallocunits Существует в каждой базе данных. Содержит по строке на каждую единицу распределения памяти.
sys.sysrowsets Существует в каждой базе данных. Содержит по строке на каждый набор строк секции для индекса или кучи.
sys.sysrowsetrefs Существует в каждой базе данных. Содержит по строке для каждой ссылки индекса на набор строк.
sys.syslogshippers Существует только в базе данных master . Содержит по строке на каждый сервер, следящий за зеркальным отображением базы данных.
sys.sysremsvcbinds Существует в каждой базе данных. Содержит по строке на каждую привязку удаленной службы.
sys.sysconvgroup Существует в каждой базе данных. Содержит по строке на каждый экземпляр службы в Service Broker.
sys.sysxmitqueue Существует в каждой базе данных. Содержит по строке на каждую очередь передачи в Service Broker.
sys.sysdesend Существует в каждой базе данных. Содержит по строке на каждую передающей конечную точку диалога Service Broker.
sys.sysdercv Существует в каждой базе данных. Содержит по одной строке на каждую принимающую конечную точку диалога Service Broker.
sys.sysendpts Существует только в базе данных master . Содержит по строке на каждую конечную точку, созданную на сервере.
sys.syswebmethods Существует только в базе данных master . Содержит по строке на каждый метод SOAP, заданный в конечной точке HTTP с поддержкой протокола SOAP, которая создана на сервере.
sys.sysqnames Существует в каждой базе данных. Содержит по строке на каждое пространство имен или полное имя 4-байтового идентификационного токена.
sys.sysxmlcomponent Существует в каждой базе данных. Каждая строка представляет компонент XML-схемы.
sys.sysxmlfacet Существует в каждой базе данных. Содержит по строке на каждый из аспектов (ограничений) определения типа XML.
sys.sysxmlplacement Существует в каждой базе данных. Содержит по строке на каждое XML-размещение для компонентов XML.
sys.syssingleobjrefs Существует в каждой базе данных. Содержит по строке на каждую ссылку типа N-1.
sys.sysmultiobjrefs Существует в каждой базе данных. Содержит по строке на каждую ссылку типа N-N.
sys.sysobjvalues Существует в каждой базе данных. Содержит по строке на каждое общее свойство сущности.
sys.sysguidrefs Существует в каждой базе данных. Содержит по строке на каждую ссылку типа GUID.

Обновление базовых таблиц системы

Данные из системных таблиц можно просмотреть с помощью представлений системных каталогов. Чтобы обновить метаданные в системной базовой таблице, используйте соответствующий интерфейс Transact-SQL (например, инструкции DDL). Невозможно вручную обновить системные таблицы. SQL Server сообщает следующие сообщения при выполнении прямых обновлений системных таблиц.

Системная таблица обновляется вручную

Msg 17659: предупреждение: идентификатор <> системной таблицы был обновлен непосредственно в идентификаторе> базы данных и <согласованности кэша, возможно, не поддерживается. SQL Server должен быть перезапущен.

Запуск базы данных с системной таблицей, которая была обновлена вручную

Msg 3859: Предупреждение: системный каталог был обновлен непосредственно в идентификаторе базы данных 17, последний раз в date_time.

Выполнение команды DBCC_CHECKDB после обновления системной таблицы вручную

Msg 3859: Предупреждение: системный каталог был обновлен непосредственно в идентификаторе базы данных 17, последний раз в date_time.

Если вы выполняете обновления вручную в системную таблицу и столкнулись с проблемой, может потребоваться восстановить данные из резервной копии или скопировать данные из затронутой базы данных в новую базу данных. Дополнительные сведения об ошибках действий пользователя.