Системные базовые таблицы
Область применения: 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 относятся: Тип сообщения контракт службы; Service Для списка имен и типов используется фиксированная двоичная сортировка. |
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.
Если вы выполняете обновления вручную в системную таблицу и столкнулись с проблемой, может потребоваться восстановить данные из резервной копии или скопировать данные из затронутой базы данных в новую базу данных. Дополнительные сведения об ошибках действий пользователя.