Поделиться через


СВОЙСТВО ОБЪЕКТА (Transact-SQL)

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

Возвращает данные об объектах области схемы в текущей базе данных. Список объектов в схеме приводится в статье документации sys.objects (Transact-SQL). Эта функция не может использоваться для объектов вне области схемы, таких как триггеры языка определения данных (DDL) и уведомления о событиях.

Соглашения о синтаксисе Transact-SQL

Синтаксис

OBJECTPROPERTY ( ID , property )

Аргументы

ИДЕНТИФИКАТОР

Выражение, представляющее идентификатор объекта в текущей базе данных. Идентификатор является int и считается объектом с областью действия схемы в текущем контексте базы данных.

свойство

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

Примечание.

Если не указано иное, NULL возвращается, если свойство не является допустимым именем свойства, идентификатор не является допустимым идентификатором объекта, идентификатором является неподдерживаемый тип объекта для указанного свойства, или вызывающий объект не имеет разрешения на просмотр метаданных объекта.

Имя свойства Тип объекта Описание и возвращаемые значения
CnstIsClustKey Ограничение PRIMARY KEY ограничение с кластеризованным индексом.

1 = true

0 = False.
CnstIsColumn Ограничение CHECK, DEFAULTили FOREIGN KEY ограничение для одного столбца.

1 = true

0 = False.
CnstIsDeleteCascade Ограничение FOREIGN KEY ограничение с параметром ON DELETE CASCADE .

1 = true

0 = False.
CnstIsDisabled Ограничение Отключенное ограничение.

1 = true

0 = False.
CnstIsNonclustKey Ограничение PRIMARY KEY или UNIQUE ограничение с некластеризованным индексом.

1 = true

0 = False.
CnstIsNotRepl Ограничение Ограничение определяется с помощью NOT FOR REPLICATION ключевых слов.

1 = true

0 = False.
CnstIsNotTrusted Ограничение Ограничение было включено без проверки существующих строк; Таким образом, ограничение может не содержаться для всех строк.

1 = true

0 = False.
CnstIsUpdateCascade Ограничение FOREIGN KEY ограничение с параметром ON UPDATE CASCADE .

1 = true

0 = False.
ExecIsAfterTrigger Триггер AFTER триггер.

1 = true

0 = False.
ExecIsAnsiNullsOn Функция Transact-SQL, процедура Transact-SQL, триггер Transact-SQL, представление ANSI_NULLS Настройка во время создания.

1 = true

0 = False.
ExecIsDeleteTrigger Триггер DELETE триггер.

1 = true

0 = False.
ExecIsFirstDeleteTrigger Триггер Первый триггер запускается при DELETE выполнении таблицы.

1 = true

0 = False.
ExecIsFirstInsertTrigger Триггер Первый триггер запускается при INSERT выполнении таблицы.

1 = true

0 = False.
ExecIsFirstUpdateTrigger Триггер Первый триггер запускается при UPDATE выполнении таблицы.

1 = true

0 = False.
ExecIsInsertTrigger Триггер INSERT триггер.

1 = true

0 = False.
ExecIsInsteadOfTrigger Триггер INSTEAD OF триггер.

1 = true

0 = False.
ExecIsLastDeleteTrigger Триггер Последний триггер запускается при DELETE выполнении таблицы.

1 = true

0 = False.
ExecIsLastInsertTrigger Триггер Последний триггер запускается при INSERT выполнении таблицы.

1 = true

0 = False.
ExecIsLastUpdateTrigger Триггер Последний триггер запускается при UPDATE выполнении таблицы.

1 = true

0 = False.
ExecIsQuotedIdentOn Функция Transact-SQL, процедура Transact-SQL, триггер Transact-SQL, представление QUOTED_IDENTIFIER Настройка во время создания.

1 = true

0 = False.
ExecIsStartup Процедура Процедура запуска.

1 = true

0 = False.
ExecIsTriggerDisabled Триггер Триггер отключен.

1 = true

0 = False.
ExecIsTriggerNotForRepl Триггер Триггер, определенный как NOT FOR REPLICATION.

1 = true

0 = False.
ExecIsUpdateTrigger Триггер UPDATE триггер.

1 = true

0 = False.
ExecIsWithNativeCompilation Процедура Transact-SQL относится к: SQL Server 2014 (12.x) и более поздним версиям.

Процедура компилируется в собственном коде.

1 = true

0 = False.

Базовый тип данных: int
HasAfterTrigger Таблица или представление Таблица или представление имеет AFTER триггер.

1 = true

0 = False.
HasDeleteTrigger Таблица или представление Таблица или представление имеет DELETE триггер.

1 = true

0 = False.
HasInsertTrigger Таблица или представление Таблица или представление имеет INSERT триггер.

1 = true

0 = False.
HasInsteadOfTrigger Таблица или представление Таблица или представление имеет INSTEAD OF триггер.

1 = true

0 = False.
HasUpdateTrigger Таблица или представление Таблица или представление имеет UPDATE триггер.

1 = true

0 = False.
IsAnsiNullsOn Функция Transact-SQL, процедура Transact-SQL, таблица, триггер Transact-SQL, представление Указывает, что ANSI NULLS параметр для таблицы имеет значение ON. В ANSI NULLS противном случае ONвсе сравнения со значениемNULL.UNKNOWN Эта настройка относится ко всем выражениям в определении таблицы, включая вычисляемые столбцы и ограничения, в течение всего времени существования таблицы.

1 = true

0 = False.
IsCheckCnst Любой объект области схемы CHECK ограничение.

1 = true

0 = False.
IsConstraint Любой объект области схемы Является одним столбцом или CHECK ограничением для столбца DEFAULTFOREIGN KEYили таблицы.

1 = true

0 = False.
IsDefault Любой объект области схемы Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

Привязанное значение по умолчанию:

1 = true

0 = False.
IsDefaultCnst Любой объект области схемы DEFAULT ограничение.

1 = true

0 = False.
IsDeterministic Функция или представление Свойство детерминизма функции или представления.

1 = детерминированная

0 = недетерминированная
IsEncrypted Функция Transact-SQL, процедура Transact-SQL, таблица, триггер Transact-SQL, представление Указывает, что исходный текст инструкции модуля был преобразован в запутанный формат. Выходные данные обфускации не отображаются непосредственно в представлениях каталога в SQL Server 2005 (9.x). Пользователи, не имеющие доступа к системным таблицам или файлам баз данных, не могут получить текст, подвергнутый запутыванию. Однако текст доступен пользователям, которые могут получить доступ к системным таблицам через диагностическое подключение для администраторов баз данных или напрямую получить доступ к файлам базы данных. Кроме того, пользователь, имеющий возможность подключить отладчик к серверному процессу, сможет получить исходный текст процедуры из памяти во время выполнения.

1 = зашифрована

0 = не зашифрована

Базовый тип данных: int
IsExecuted Любой объект области схемы Объект (представление, процедура, функция или триггер) может быть выполнен.

1 = true

0 = False.
IsExtendedProc Любой объект области схемы Расширенная процедура.

1 = true

0 = False.
IsForeignKey Любой объект области схемы FOREIGN KEY ограничение.

1 = true

0 = False.
IsIndexed Таблица или представление Таблица или представление, имеющие индекс.

1 = true

0 = False.
IsIndexable Таблица или представление Таблица или представление, на которых может быть создан индекс.

1 = true

0 = False.
IsInlineFunction Function Встроенная функция.

1 = встроенная функция

0 = невстроенная функция
IsMSShipped Любой объект области схемы Объект, созданный во время установки SQL Server.

1 = true

0 = False.
IsPrimaryKey Любой объект области схемы PRIMARY KEY ограничение.

1 = true

0 = False.

NULL = не является функцией или идентификатором объекта не является допустимым.
IsProcedure Любой объект области схемы Процедура.

1 = true

0 = False.
IsQuotedIdentOn функция Transact-SQL, процедура Transact-SQL, таблица, Transact-SQL триггер, представление, ограничение, CHECKDEFAULT определение Указывает, что параметр идентификатора кавычки для объекта.ON Это означает, что двойные кавычки разделяют идентификаторы во всех выражениях, участвующих в определении объекта.

1 = ON

0 = OFF
IsQueue Любой объект области схемы Очередь компонента Service Broker

1 = true

0 = False.
IsReplProc Любой объект области схемы Процедура репликации.

1 = true

0 = False.
IsRule Любой объект области схемы Привязанное правило.

1 = true

0 = False.
IsScalarFunction Function Скалярная функция.

1 = скалярная функция

0 = нескалярная функция
IsSchemaBound Функция или представление Привязанная к схеме функция или представление, созданное с помощью SCHEMABINDING.

1 = привязана к схеме

0 = не привязана к схеме.
IsSystemTable Таблица Системная таблица.

1 = true

0 = False.
IsSystemVerified Object SQL Server может проверять свойства детерминированности и точности объекта.

1 = true

0 = False.
IsTable Таблица Таблица.

1 = true

0 = False.
IsTableFunction Function Функция с табличным значением.

1 = функция с табличным значением

0 = функция не с табличным значением
IsTrigger Любой объект области схемы Триггер.

1 = true

0 = False.
IsUniqueCnst Любой объект области схемы UNIQUE ограничение.

1 = true

0 = False.
IsUserTable Таблица Пользовательская таблица.

1 = true

0 = False.
IsView Представления Представление.

1 = true

0 = False.
OwnerId Любой объект области схемы Владелец объекта.

Примечание. Владелец схемы необязательно является владельцем объекта. Например, дочерние объекты (те, где parent_object_id не имеет значения NULL), всегда возвращают тот же идентификатор владельца, что и родительский.

Non-null = идентификатор пользователя базы данных владельца объекта.
SchemaId Любой объект области схемы Идентификатор схемы, которой принадлежит объект.
TableDeleteTrigger Таблица Таблица имеет DELETE триггер.

>1 = идентификатор первого триггера указанного типа.
TableDeleteTriggerCount Таблица Таблица имеет указанное количество триггеров DELETE .

>0 = количество триггеров DELETE .
TableFullTextMergeStatus Таблица Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

Определяет, участвует ли в настоящий момент полнотекстовый индекс для таблицы в процессе слияния.

0 = для таблицы отсутствует полнотекстовый индекс, либо индекс не находится в процессе слияния.

1 = полнотекстовый индекс находится в процессе слияния.
TableFullTextBackgroundUpdateIndexOn Таблица Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

В таблице имеется включенный полнотекстовый индекс фонового обновления (отслеживание автозамен).

1 = ИСТИННО

0 = ЛОЖНО
TableFulltextCatalogId Таблица Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

Идентификатор полнотекстового каталога, в котором находятся данные полнотекстового индекса для таблицы.

Не 0 = идентификатор полнотекстового каталога, связанный с уникальным индексом, идентифицирующим строки в полнотекстовой индексированной таблице.

0 = таблица не имеет полнотекстового индекса.
TableFulltextChangeTrackingOn Таблица Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

Для таблицы включено полнотекстовое отслеживание изменений.

1 = ИСТИННО

0 = ЛОЖНО
TableFulltextDocsProcessed Таблица Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

Количество строк, обработанных с начала полнотекстового индексирования. В таблице, которая индексируется для полнотекстового поиска, все столбцы одной строки рассматриваются как часть единого индексируемого документа.

0 = отсутствие активного сканирования или полнотекстовое индексирование закончено.

> 0 = один из следующих вариантов (А или Б): А) Количество документов, обработанных с использованием операций вставки или обновления с начала полного, добавочного или ручного заполнения с отслеживанием изменений. B) Количество строк, обработанных операциями вставки или обновления после включения отслеживания изменений с включенным индексом фонового обновления, изменена схема полнотекстового индекса, перестроенный полнотекстовый каталог или экземпляр SQL Server перезапущен.

NULL = Таблица не имеет полнотекстового индекса.

Это свойство не обеспечивает наблюдение за удаленными строками или их подсчет.
TableFulltextFailCount Таблица Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

Количество строк, для которых полнотекстовый поиск не выявил индекса.

0 = заполнение населения завершено.

> 0 = один из следующих вариантов (А или Б): А) Количество документов, не индексированных с начала заполнения отслеживания изменений полного, постепенного или ручного обновления. Б) Для отслеживания изменений с индексацией фонового обновления — число строк, которые не проиндексированы с начала или перезапуска заполнения. Это может быть вызвано изменением схемы, перестроением каталога, перезапуском сервера и т. д.

NULL = Таблица не имеет полнотекстового индекса.
TableFulltextItemCount Таблица Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

Количество строк, для которых было успешно выполнено полнотекстовое индексирование.
TableFulltextKeyColumn Таблица Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

Идентификатор столбца, связанного с уникальным индексом одного столбца, который участвует в определении полнотекстового индекса:

0 = таблица не имеет полнотекстового индекса.
TableFulltextPendingChanges Таблица Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

Количество ожидающих отслеженных изменений к обработке.

0 = Отслеживание изменений не включено.

NULL = Таблица не имеет полнотекстового индекса.
TableFulltextPopulateStatus Таблица Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

0 = Бездействует.

1 = Производится полное заполнение.

2 = Производится добавочное заполнение.

3 = Выполняется распространение отслеженных изменений.

4 = выполняется индексирование фонового обновления (например автоматическое отслеживание изменений).

5 = Полнотекстовое индексирование приостановлено, или не хватает ресурсов на его выполнение.
TableHasActiveFulltextIndex Таблица Область применения: SQL Server 2008 (10.0.x) и более поздних версий.

Таблица имеет активный полнотекстовый индекс.

1 = true

0 = False.
TableHasCheckCnst Таблица Таблица имеет CHECK ограничение.

1 = true

0 = False.
TableHasClustIndex Таблица Таблица имеет кластеризованный индекс.

1 = true

0 = False.
TableHasDefaultCnst Таблица Таблица имеет DEFAULT ограничение.

1 = true

0 = False.
TableHasDeleteTrigger Таблица Таблица имеет DELETE триггер.

1 = true

0 = False.
TableHasForeignKey Таблица Таблица имеет FOREIGN KEY ограничение.

1 = true

0 = False.
TableHasForeignRef Таблица Таблица ссылается на FOREIGN KEY ограничение.

1 = true

0 = False.
TableHasIdentity Таблица Таблица содержит столбец идентификаторов.

1 = true

0 = False.
TableHasIndex Таблица Таблица имеет индекс какого-либо типа.

1 = true

0 = False.
TableHasInsertTrigger Таблица Объект имеет INSERT триггер.

1 = true

0 = False.
TableHasNonclustIndex Таблица Таблица содержит некластеризованный индекс.

1 = true

0 = False.
TableHasPrimaryKey Таблица Таблица содержит первичный ключ.

1 = true

0 = False.
TableHasRowGuidCol Таблица Таблица содержит ROWGUIDCOLстолбец uniqueidentifier .

1 = true

0 = False.
TableHasTextImage Таблица Таблица содержит столбец text, ntext или image.

1 = true

0 = False.
TableHasTimestamp Таблица Таблица содержит столбец timestamp.

1 = true

0 = False.
TableHasUniqueCnst Таблица Таблица имеет UNIQUE ограничение.

1 = true

0 = False.
TableHasUpdateTrigger Таблица Объект имеет UPDATE триггер.

1 = true

0 = False.
TableHasVarDecimalStorageFormat Таблица Для таблицы включен формат хранения vardecimal.

1 = true

0 = False.
TableInsertTrigger Таблица Таблица имеет INSERT триггер.

>1 = идентификатор первого триггера указанного типа.
TableInsertTriggerCount Таблица Таблица имеет указанное количество триггеров INSERT .

>0 = количество триггеров INSERT .
TableIsFake Таблица Таблица реально не существует. Он материализуется внутренне по запросу ядро СУБД SQL Server.

1 = true

0 = False.
TableIsLockedOnBulkLoad Таблица Таблица заблокирована из-за bcp или BULK INSERT задания.

1 = true

0 = False.
TableIsMemoryOptimized Таблица относится к: SQL Server 2014 (12.x) и более поздним версиям.

Таблица, оптимизированная для памяти

1 = true

0 = False.

Базовый тип данных: int

Дополнительные сведения см. в разделеIn-Memory обзоре и сценариях использования OLTP.
TableIsPinned Таблица Таблица закреплена для хранения в кэше данных.

0 = False.

Эта функция не поддерживается в SQL Server 2005 (9.x) и более поздних версиях.
TableTextInRowLimit Таблица Максимальное количество байтов, допустимое для текста в строке.

0, если не установлен параметр текст в строке.
TableUpdateTrigger Таблица Таблица имеет UPDATE триггер.

> 1 = идентификатор первого триггера указанного типа.
TableUpdateTriggerCount Таблица Таблица имеет указанное UPDATE количество триггеров.

> 0 = количество триггеров UPDATE .
TableHasColumnSet Таблица Таблица содержит набор столбцов.

0 = False.

1 = true

Дополнительные сведения см. в разделе "Использование наборов столбцов".
TableTemporalType Таблица относится к: SQL Server 2016 (13.x) и более поздним версиям.

Задает тип таблицы:

0 = нетемпоральная таблица;

1 = таблица журнала для таблицы с управлением версиями;

2 = темпоральная таблица с управлением версиями.

Типы возвращаемых данных

int

Исключения

Возвращает ошибку NULL или если вызывающий объект не имеет разрешения на просмотр объекта.

Разрешения

Пользователь может просматривать только метаданные защищаемых объектов, которыми он владеет или на которые пользователю были предоставлены разрешения. Это означает, что встроенные функции метаданных, такие как OBJECTPROPERTY возврат NULL , если у пользователя нет разрешений на объект. Дополнительные сведения см. в разделе "Конфигурация видимости метаданных".

Замечания

В ядро СУБД предполагается, что object_id находится в текущем контексте базы данных. Запрос, ссылающийся на object_id в другой базе данных, возвращает или неверные NULL результаты. Например, в следующем запросе текущий контекст базы данных является базой master данных. Ядро СУБД пытается вернуть значение свойства для указанного object_id в этой базе данных вместо базы данных, указанной в запросе. Запрос возвращает неверные результаты, так как представление vEmployee не находится в master базе данных.

USE master;
GO
SELECT OBJECTPROPERTY(OBJECT_ID(N'AdventureWorks2022.HumanResources.vEmployee'), 'IsView');
GO

OBJECTPROPERTY(view_id, 'IsIndexable') может использовать значительные ресурсы компьютера, так как для оценки свойства IsIndexable требуется синтаксический анализ определения представления, нормализации и частичной оптимизации. Даже если свойство IsIndexable определяет, что таблицы или представления могут быть проиндексированы, фактическое создание индекса может завершиться ошибкой, если не выполняются требования к ключу индекса. Дополнительные сведения см. в статье CREATE INDEX (Transact-SQL).

OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex') возвращает значение 1 (true), если для индексирования добавляется по крайней мере один столбец таблицы. Заполнение полнотекстового индекса становится активным, как только для индексирования добавлен хотя бы один столбец.

При создании QUOTED IDENTIFIER таблицы параметр всегда хранится как ON в метаданных таблицы, даже если параметр задан OFF при создании таблицы. OBJECTPROPERTY(table_id, 'IsQuotedIdentOn') Поэтому всегда возвращает значение 1 (true).

Примеры

А. Убедитесь, что объект является таблицей

В следующем примере производится проверка, является ли UnitMeasure таблицей в базе данных AdventureWorks2025.

USE AdventureWorks2022;
GO
IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 1
   PRINT 'UnitMeasure is a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 0
   PRINT 'UnitMeasure is not a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') IS NULL
   PRINT 'ERROR: UnitMeasure is not a valid object.';
GO

B. Убедитесь, что скалярная определяемая пользователем функция детерминирована

В приведенном ниже примере производится проверка того, является ли пользовательская скалярная функция ufnGetProductDealerPrice, возвращающая значение money, детерминированной.

USE AdventureWorks2022;
GO
SELECT OBJECTPROPERTY(OBJECT_ID('dbo.ufnGetProductDealerPrice'), 'IsDeterministic');
GO

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

-----
0

C. Поиск таблиц, принадлежащих определенной схеме

В следующем примере возвращаются все таблицы в схеме dbo .

-- Uses AdventureWorks

SELECT schema_name(o.schema_id), o.name, o.object_id, o.type_desc
FROM sys.objects AS o
WHERE OBJECTPROPERTY(o.object_id, N'SchemaId') = SCHEMA_ID(N'dbo')
ORDER BY o.type_desc, o.name;
GO

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

Г. Проверка того, является ли объект таблицей

В следующем примере проверяется, является ли dbo.DimReseller таблица в базе данных AdventureWorksPDW2022.

-- Uses AdventureWorks

IF OBJECTPROPERTY (OBJECT_ID(N'dbo.DimReseller'),'ISTABLE') = 1
   SELECT 'DimReseller is a table.'
ELSE
   SELECT 'DimReseller is not a table.';
GO