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)