sys.objects (Transact-SQL)
Применимо к: SQL Server Azure SQL Database
Управляемый экземпляр SQL Azure
Azure Synapse Analytics Analytics
Platform System (PDW)
Конечная точка SQL в хранилище Microsoft Fabric
в Microsoft Fabric
Содержит строку для каждого определяемого пользователем объекта с областью действия схемы, который создается в базе данных, включая скомпилированные в собственном коде скалярные пользовательские функции.
Дополнительные сведения см. в разделе Скалярные определяемые пользователем функции для выполняющейся в памяти OLTP.
Примечание
sys.objects
не показывает триггеры DDL, так как они не принадлежат области схемы. Все триггеры, как DML, так и DDL, находятся в sys.triggers. sys.triggers
Представление поддерживает смешанные правила имен для различных видов триггеров.
Имя столбца | Тип данных | Описание |
---|---|---|
name | sysname | Имя объекта. |
object_id | int | Идентификационный номер объекта. Уникален в базе данных. |
principal_id | int | Идентификатор отдельного владельца, если он отличается от владельца схемы. По умолчанию содержащиеся в схеме объекты принадлежат владельцу схемы. Однако с помощью инструкции ALTER AUTHORIZATION можно изменить право собственности и указать другого владельца. Принимает значение NULL, если нет альтернативного отдельного владельца. Имеет значение NULL, если типом объекта является один из следующих: C = ограничение CHECK D = значение по умолчанию (DEFAULT), в ограничении или независимо заданное F = ограничение FOREIGN KEY PK = ограничение PRIMARY KEY R = правило (старый стиль, изолированный) TA = триггер сборки (интеграция со средой CLR) TR = триггер SQL UQ = ограничение UNIQUE EC = ограничение границы |
schema_id | int | Идентификатор схемы, в которой содержится объект. Системные объекты области схемы всегда содержатся в схемах sys или INFORMATION_SCHEMA. |
parent_object_id | int | Идентификатор объекта, которому принадлежит данный объект. 0 = не дочерний объект |
тип | char(2) | Тип объекта: AF = агрегатная функция (среда CLR) C = ограничение CHECK D = значение по умолчанию (DEFAULT), в ограничении или независимо заданное F = ограничение FOREIGN KEY FN = скалярная функция SQL FS = скалярная функция сборки (среда CLR) FT = функция сборки (среда CLR) с табличным значением IF = встроенная функция SQL с табличным значением IT = внутренняя таблица P = хранимая процедура SQL PC = хранимая процедура сборки (среда CLR) PG = структура плана PK = ограничение PRIMARY KEY R = правило (старый стиль, изолированный) RF = процедура фильтра репликации S = системная базовая таблица SN = синоним SO = объект последовательности U = таблица (пользовательская) V = представление Область применения: SQL Server 2012 (11.x) и более поздних версий. SQ = очередь обслуживания TA = триггер DML сборки (среда CLR) TF = возвращающая табличное значение функция SQL TR = триггер DML SQL TT = табличный тип UQ = ограничение UNIQUE X = расширенная хранимая процедура Применимо к: SQL Server 2014 (12.x) и более поздних версий, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW). ST = STATS_TREE Область применения: SQL Server 2016 (13.x) и более поздних версий, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW). ET = внешняя таблица Область применения: SQL Server 2017 (14.x) и более поздних версий, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW). EC = ограничение границы |
type_desc | nvarchar(60) | Описание типа объекта: AGGREGATE_FUNCTION CHECK_CONSTRAINT CLR_SCALAR_FUNCTION CLR_STORED_PROCEDURE CLR_TABLE_VALUED_FUNCTION CLR_TRIGGER DEFAULT_CONSTRAINT EDGE_CONSTRAINT EXTENDED_STORED_PROCEDURE FOREIGN_KEY_CONSTRAINT INTERNAL_TABLE PLAN_GUIDE PRIMARY_KEY_CONSTRAINT REPLICATION_FILTER_PROCEDURE RULE SEQUENCE_OBJECT SERVICE_QUEUE SQL_INLINE_TABLE_VALUED_FUNCTION SQL_SCALAR_FUNCTION SQL_STORED_PROCEDURE SQL_TABLE_VALUED_FUNCTION SQL_TRIGGER SYNONYM SYSTEM_TABLE TYPE_TABLE UNIQUE_CONSTRAINT USER_TABLE VIEW |
create_date | datetime | Дата создания объекта. |
modify_date | datetime | Дата последнего изменения объекта с помощью инструкции ALTER. Если объект является таблицей или представлением, modify_date также изменяется при создании или изменении индекса в таблице или представлении. |
is_ms_shipped | bit | Объект создается внутренним компонентом SQL Server. |
is_published | bit | Объект опубликован. |
is_schema_published | bit | Опубликована только схема объекта. |
Комментарии
Встроенные функции OBJECT_ID, OBJECT_NAME и OBJECTPROPERTY() можно применить к объектам, показанным в sys.objects
.
Существует версия этого представления с той же схемой, которая называется sys.system_objects, которая показывает системные объекты. Существует другое представление, которое называется sys.all_objects , которое отображает как системные, так и пользовательские объекты. Все три представления каталогов имеют одну и ту же структуру.
В этой версии SQL Server расширенный индекс, например XML-индекс или пространственный индекс, считается внутренней таблицей в sys.objects
(тип = ИТ и type_desc = INTERNAL_TABLE). Для расширенного индекса:
name
— это внутреннее имя таблицы индексов.parent_object_id
— объектobject_id
базовой таблицы.is_ms_shipped
Для столбцов иis_published
is_schema_published
задано значение0
.
Связанные полезные системные представления
Подмножества объектов можно просматривать с помощью системных представлений для определенного типа объектов, например:
Разрешения
Видимость метаданных в представлениях каталогов ограничивается защищаемыми объектами, которыми пользователь владеет или на которые ему были предоставлены разрешения. Дополнительные сведения см. в разделе Metadata Visibility Configuration.
Примеры
A. Возвращает все объекты, которые были изменены за последние N дней
Перед запуском следующего запроса замените <database_name>
и <n_days>
действительными значениями.
USE <database_name>;
GO
SELECT name AS object_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.objects
WHERE modify_date > GETDATE() - <n_days>
ORDER BY modify_date;
GO
Б. Возврат параметров для указанной хранимой процедуры или функции
Перед запуском следующего запроса замените <database_name>
и <schema_name.object_name>
действительными именами.
USE <database_name>;
GO
SELECT SCHEMA_NAME(schema_id) AS schema_name
,o.name AS object_name
,o.type_desc
,p.parameter_id
,p.name AS parameter_name
,TYPE_NAME(p.user_type_id) AS parameter_type
,p.max_length
,p.precision
,p.scale
,p.is_output
FROM sys.objects AS o
INNER JOIN sys.parameters AS p ON o.object_id = p.object_id
WHERE o.object_id = OBJECT_ID('<schema_name.object_name>')
ORDER BY schema_name, object_name, p.parameter_id;
GO
В. Возврат всех определяемых пользователем функций в базе данных
Перед запуском следующего запроса замените <database_name>
действительным именем базы данных.
USE <database_name>;
GO
SELECT name AS function_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.objects
WHERE type_desc LIKE '%FUNCTION%';
GO
Г. Возвращает владельца каждого объекта в схеме
Перед запуском следующего запроса замените все экземпляры <database_name>
и <schema_name>
действительными именами.
USE <database_name>;
GO
SELECT 'OBJECT' AS entity_type
,USER_NAME(OBJECTPROPERTY(object_id, 'OwnerId')) AS owner_name
,name
FROM sys.objects WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION
SELECT 'TYPE' AS entity_type
,USER_NAME(TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'OwnerId')) AS owner_name
,name
FROM sys.types WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION
SELECT 'XML SCHEMA COLLECTION' AS entity_type
,COALESCE(USER_NAME(xsc.principal_id),USER_NAME(s.principal_id)) AS owner_name
,xsc.name
FROM sys.xml_schema_collections AS xsc JOIN sys.schemas AS s
ON s.schema_id = xsc.schema_id
WHERE s.name = '<schema_name>';
GO