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


OBJECTPROPERTY (Transact-SQL)

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

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

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

Синтаксис

OBJECTPROPERTY ( id , property )   

Аргументы

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

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

Примечание.

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

Имя свойства Тип объекта Описание и возвращаемые значения
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. Это означает, что результатом всех сравнений со значением NULL является UNKNOWN. Эта настройка относится ко всем выражениям в определении таблицы, включая вычисляемые столбцы и ограничения, в течение всего времени существования таблицы.

1 = True

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

1 = True

0 = False.
IsConstraint Любой объект области схемы Ограничение CHECK, DEFAULT или FOREIGN 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). Пользователи, не имеющие доступа к системным таблицам или файлам баз данных, не могут получить текст, подвергнутый запутыванию. Однако этот текст будет доступен пользователям, которые имеют либо доступ к системным таблицам через порт DAC, либо непосредственный доступ к файлам баз данных. Кроме того, пользователь, имеющий возможность подключить отладчик к серверному процессу, сможет получить исходный текст процедуры из памяти во время выполнения.

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, представление, ограничение CHECK, определение DEFAULT Указывается, что параметр quoted identifier для объекта имеет значение ON. Это означает, что двойные кавычки разделяют идентификаторы во всех выражениях, участвующих в определении объекта.

1 = включен;

0 = выключен.
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) всегда возвращают в качестве родителя один и тот же идентификатор владельца.

Nonnull = идентификатор пользователя базы данных владельца объекта.
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 = TRUE

0 = FALSE
TableFulltextCatalogId Таблица Применимо: SQL Server 2008 (10.0.x) и более поздних версий.

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

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

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

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

1 = TRUE

0 = FALSE
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, если у пользователя нет разрешения на доступ к объекту. Дополнительные сведения см. в разделе Metadata Visibility Configuration.

Замечания

В ядро СУБД предполагается, что 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 таблицей в базе данных AdventureWorks2022.

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

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

В приведенном ниже примере возвращаются все таблицы в схеме 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 таблица в базе данных 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  

См. также

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