OBJECTPROPERTY (Transact-SQL)

Область применения: SQL Server (все поддерживаемые версии) База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics Analytics Platform System (PDW)

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

Topic link iconСинтаксические обозначения в Transact-SQL

Синтаксис

OBJECTPROPERTY ( id , property )   

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

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

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

Примечание

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

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

0 = ложь
ExecIsAfterTrigger Триггер Триггер AFTER.

1 = истина

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

1 = истина

0 = ложь
ExecIsDeleteTrigger Триггер Триггер DELETE.

1 = истина

0 = ложь
ExecIsFirstDeleteTrigger Триггер Первый триггер, который срабатывает при применении к таблице инструкции DELETE.

1 = истина

0 = ложь
ExecIsFirstInsertTrigger Триггер Первый триггер, который срабатывает при применении к таблице инструкции INSERT.

1 = истина

0 = ложь
ExecIsFirstUpdateTrigger Триггер Первый триггер, который срабатывает при применении к таблице инструкции UPDATE.

1 = истина

0 = ложь
ExecIsInsertTrigger Триггер Триггер INSERT.

1 = истина

0 = ложь
ExecIsInsteadOfTrigger Триггер Триггер INSTEAD OF.

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

0 = ложь
ExecIsTriggerNotForRepl Триггер Триггер определен как NOT FOR REPLICATION.

1 = истина

0 = ложь
ExecIsUpdateTrigger Триггер Триггер UPDATE.

1 = истина

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

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

1 = истина

0 = ложь

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

0 = ложь
IsConstraint Любой объект области схемы Ограничение CHECK, DEFAULT или FOREIGN KEY единственного столбца на столбце или таблице.

1 = истина

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

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

1 = истина

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

1 = истина

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

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

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

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

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

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

0 = ложь
IsInlineFunction Функция Встроенная функция.

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

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

1 = истина

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

1 = истина

0 = ложь

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

1 = истина

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

1 = включен;

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

1 = истина

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

1 = истина

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

1 = истина

0 = ложь
IsScalarFunction Функция Скалярная функция.

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

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

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

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

1 = истина

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

1 = истина

0 = ложь
IsTable Таблица Таблица.

1 = истина

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

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

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

1 = истина

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

1 = истина

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

1 = истина

0 = ложь
IsView Просмотр Представление.

1 = истина

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

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

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

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

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

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

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

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

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

1 = TRUE

0 = FALSE
TableFulltextCatalogId Таблица Область применения: SQL Server 2008 и более поздних версий.

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

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

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

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

1 = TRUE

0 = FALSE
TableFulltextDocsProcessed Таблица Область применения: SQL Server 2008 и более поздних версий.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

0 = ложь
TableHasDeleteTrigger Таблица У таблицы есть триггер DELETE.

1 = истина

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

1 = истина

0 = ложь
TableHasForeignRef Таблица На таблицу есть ссылки по ограничению FOREIGN KEY.

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

0 = ложь
TableHasRowGuidCol Таблица Таблица содержит свойство ROWGUIDCOL для столбца uniqueidentifier.

1 = истина

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

1 = истина

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

1 = истина

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

1 = истина

0 = ложь
TableHasUpdateTrigger Таблица Объект содержит триггер UPDATE.

1 = истина

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

1 = истина

0 = ложь
TableInsertTrigger Таблица Таблица содержит триггер INSERT.

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

>0 = количество триггеров INSERT.
TableIsFake Таблица Таблица реально не существует. Компонент Компонент SQL Server Database Engine материализует ее внутренним образом по запросу.

1 = истина

0 = ложь
TableIsLockedOnBulkLoad Таблица Таблица заблокирована в связи с bcp или заданием BULK INSERT.

1 = истина

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

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

1 = истина

0 = ложь

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

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

0 = ложь

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

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

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

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

0 = ложь

1 = истина

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

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

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

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

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

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

int

Исключения

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

Разрешения

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

Комментарии

Компонент Компонент Database Engine предполагает, что объект с идентификатором object_id находится в контексте текущей базы данных. Запрос, который ссылается на object_id в другой базе данных, вернет значение NULL или неверный результат. Например, в приведенном ниже запросе контекст текущий базы данных — база данных master. Компонент Компонент Database Engine попытается вернуть значение свойства для заданного object_id в этой базе данных вместо базы данных, указанной в запросе. Запрос возвращает неверные результаты, потому что представление vEmployee не содержится в базе данных master.

USE master;  
GO  
SELECT OBJECTPROPERTY(OBJECT_ID(N'AdventureWorks2012.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).

Примеры

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

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

USE AdventureWorks2012;  
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  

Б. Проверка того, что скалярная функция, определяемая пользователем, является детерминированной

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

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

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

-----  
0

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

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

-- Uses AdventureWorks  
  
SELECT name, object_id, type_desc  
FROM sys.objects   
WHERE OBJECTPROPERTY(object_id, N'SchemaId') = SCHEMA_ID(N'dbo')  
ORDER BY type_desc, name;  
GO  

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

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

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

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

См. также

COLUMNPROPERTY (Transact-SQL)
Функции метаданных (Transact-SQL)
OBJECTPROPERTYEX (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)
sys.objects (Transact-SQL)