sys.objects (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric

Содержит строку для каждого определяемого пользователем объекта область схемы, созданного в базе данных, включая собственные скомпилированные скалярные определяемые пользователем функции.

Дополнительные сведения см. в разделе Скалярные определяемые пользователем функции для выполняющейся в памяти OLTP.

Примечание.

sys.objectsне отображает триггеры DDL, так как они не являются область схемы. Все триггеры, как DML, так и DDL, находятся в sys.triggers. sys.triggers поддерживает сочетание правил области имен для различных типов триггеров.

Имя столбца Тип данных Description
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 = ограничение edge
schema_id int Идентификатор схемы, в которой содержится объект.

Системные объекты области схемы всегда содержатся в схемах sys или INFORMATION_SCHEMA.
parent_object_id int Идентификатор объекта, которому принадлежит данный объект.

0 = не дочерний объект
type 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) и более поздних версий, База данных SQL Azure, Azure Synapse Analytics, Analytics Platform System (PDW).

ST = STATS_TREE

Применимо к: SQL Server 2016 (13.x) и более поздних версий, База данных SQL Azure, Azure Synapse Analytics, analytics Platform System (PDW).

ET = внешняя таблица

Область применения: SQL Server 2017 (14.x) и более поздних версий, База данных SQL Azure, Azure Synapse Analytics, Analytics Platform System (PDW).

EC = ограничение edge
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
ПРАВИЛО
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
ВИД
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_shippedis_schema_published для is_published столбцов задано значение 0.

Подмножества объектов можно просматривать с помощью системных представлений для определенного типа объекта, например:

Разрешения

Видимость метаданных в представлениях каталога ограничена защищаемыми объектами, которыми владеет пользователь или которым пользователь получил некоторое разрешение. Дополнительные сведения см. в разделе Metadata Visibility Configuration.

Примеры

А. Возвращает все объекты, которые были изменены за последние 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

B. Возврат параметров для указанной хранимой процедуры или функции

Перед запуском следующего запроса замените <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

C. Возврат всех пользовательских функций в базе данных

Перед запуском следующего запроса замените <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

D. Возврат владельца каждого объекта в схеме

Перед запуском следующего запроса замените все экземпляры <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

См. также