OBJECTPROPERTY (Transact-SQL)
Возвращает данные об объектах области схемы в текущей базе данных. Список объектов области схемы см. в разделе sys.objects (Transact-SQL). Эта функция не может использоваться для объектов вне области схемы, таких как триггеры языка определения данных (DDL) и уведомления о событиях.
Синтаксические обозначения в Transact-SQL
Синтаксис
OBJECTPROPERTY ( id , property )
Аргументы
id
Выражение, которое представляет идентификатор объекта в текущей базе данных. Аргумент id имеет тип int. Предполагается, что он представляет объект области схемы в текущем контексте базы данных.property
Выражение, содержащее сведения, которые необходимо вернуть для объекта, указываемого идентификатором 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
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
Любой объект области схемы
Привязанное значение по умолчанию.
1 = True
0 = False
IsDefaultCnst
Любой объект области схемы
Ограничение DEFAULT.
1 = True
0 = False
IsDeterministic
Функция, представление
Свойство детерминизма функции или представления.
1 = детерминированная
0 = недетерминированная
IsEncrypted
Функция Transact-SQL, процедура Transact-SQL, таблица, триггер Transact-SQL, представление
Указывает, что исходный текст инструкции модуля был преобразован в запутанный формат. Результат запутывания не виден непосредственно ни в одном представлении каталога SQL Server 2005. Пользователи, не имеющие доступа к системным таблицам или файлам баз данных, не могут получить текст, подвергнутый запутыванию. Однако этот текст будет доступен пользователям, которые имеют либо доступ к системным таблицам через порт 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
Функция
Встроенная функция.
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 = OFF (ВЫКЛ.)
IsQueue
Любой объект области схемы
Очередь компонента Service Broker
1 = True
0 = False
IsReplProc
Любой объект области схемы
Процедура репликации.
1 = True
0 = False
IsRule
Любой объект области схемы
Привязанное правило.
1 = True
0 = False
IsScalarFunction
Функция
Скалярная функция.
1 = скалярная функция
0 = нескалярная функция
IsSchemaBound
Функция, представление
Привязанные к схеме функция или представление, созданные с помощью SCHEMABINDING.
1 = привязана к схеме
0 = не привязана к схеме.
IsSystemTable
Таблица
Системная таблица.
1 = True
0 = False
IsTable
Таблица
Таблица.
1 = True
0 = False
IsTableFunction
Функция
Функция с табличным значением.
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 = идентификатор пользователя базы данных владельца объекта.
TableDeleteTrigger
Таблица
У таблицы есть триггер DELETE.
>1 = идентификатор первого триггера указанного типа.
TableDeleteTriggerCount
Таблица
В таблице имеется указанное число триггеров DELETE.
>0 = количество триггеров DELETE.
TableFullTextMergeStatus
Таблица
Определяет, участвует ли в настоящий момент полнотекстовый индекс для таблицы в процессе слияния.
0 = для таблицы отсутствует полнотекстовый индекс, либо индекс не находится в процессе слияния.
1 = полнотекстовый индекс находится в процессе слияния.
TableFullTextBackgroundUpdateIndexOn
Таблица
В таблице имеется включенный полнотекстовый индекс фонового обновления (отслеживание автозамен).
1 = TRUE
0 = FALSE
TableFulltextCatalogId
Таблица
Идентификатор полнотекстового каталога, в котором находятся данные полнотекстового индекса для таблицы.
Не 0 = идентификатор полнотекстового каталога, связанный с уникальным индексом, идентифицирующим строки в полнотекстовой индексированной таблице.
0 = таблица не имеет полнотекстового индекса.
TableFulltextChangeTrackingOn
Таблица
Для таблицы включено полнотекстовое отслеживание изменений.
1 = TRUE
0 = FALSE
TableFulltextDocsProcessed
Таблица
Количество строк, обработанных с начала полнотекстового индексирования. В таблице, которая индексируется для полнотекстового поиска, все столбцы одной строки рассматриваются как часть единого индексируемого документа.
0 = отсутствие активного сканирования или полнотекстовое индексирование закончено.
> 0 = Один из следующих вариантов:
Количество документов, обработанных операциями вставки или обновления, начиная с запуска полного, дополнительного или ручного заполнения с отслеживанием изменений.
Число строк, обработанных операциями вставки или обновления с момента включения отслеживания изменений при фоновом заполнении индекса обновления, изменения схемы полнотекстового индекса, повторного построения полнотекстового каталога, перезапуска экземпляра SQL Server и т. д.
NULL = таблица не содержит полнотекстового индекса.
Примечание Это свойство не обеспечивает наблюдение за удаленными строками или их подсчет.
TableFulltextFailCount
Таблица
Количество строк, для которых полнотекстовый поиск не выявил индекса.
0 = Заполнение завершено.
> 0 = один из следующих вариантов.
количество документов, не индексированных с начала заполнения отслеживания изменений полного, постепенного или ручного обновления;
Для отслеживания изменений с индексацией фонового обновления — число строк, которые не проиндексированы с начала или перезапуска заполнения. Это может быть вызвано изменением схемы, перестроением каталога, перезапуском сервера и т.д.
NULL = таблица не содержит полнотекстового индекса.
TableFulltextItemCount
Таблица
Количество строк, для которых было успешно выполнено полнотекстовое индексирование.
TableFulltextKeyColumn
Таблица
Идентификатор столбца, связанного с уникальным индексом одного столбца, который участвует в определении полнотекстового индекса.
0 = таблица не имеет полнотекстового индекса.
TableFulltextPendingChanges
Таблица
Количество отслеживаемых изменений, ожидающих обработки.
0 = Отслеживание изменений не включено.
NULL = таблица не содержит полнотекстового индекса.
TableFulltextPopulateStatus
Таблица
0 = Бездействует.
1 = выполняется полное заполнение.
2 = Производится добавочное заполнение.
3 = Выполняется распространение отслеженных изменений.
4 = Выполняется индексирование фонового обновления (например автоматическое отслеживание изменений).
5 = полнотекстовое индексирование приостановлено, или не хватает ресурсов на его выполнение.
TableHasActiveFulltextIndex
Таблица
Таблица имеет активный полнотекстовый индекс.
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 Database Engine материализует ее внутренним образом по запросу.
1 = True
0 = False
TableIsLockedOnBulkLoad
Таблица
Таблица заблокирована из-за bcp или задания BULK INSERT.
1 = True
0 = False
TableIsPinned
Таблица
Таблица закреплена для хранения в кэше данных.
0 = False
Эта функция не поддерживается в SQL Server 2005 и в более поздних версиях.
TableTextInRowLimit
Таблица
Максимальное количество байтов, допустимое для параметра text in row.
0, если параметр text in row не задан.
TableUpdateTrigger
Таблица
Таблица содержит триггер UPDATE.
> 1 = Идентификатор первого триггера указанного типа.
TableUpdateTriggerCount
Таблица
В таблице имеется указанное число триггеров UPDATE.
>0 = количество триггеров UPDATE.
TableHasColumnSet
Таблица
Таблица содержит набор столбцов.
0 = False
1 = True
Дополнительные сведения см. в разделе Использование наборов столбцов.
Типы возвращаемых данных
int
Исключения
Возвращает значение NULL в случае ошибки или в случае, если у вызывающей стороны отсутствуют разрешения на просмотр объекта.
Пользователь может просматривать только метаданные защищаемых объектов, которыми он владеет или на которые пользователю были предоставлены разрешения. Это значит, что встроенные функции, создающие метаданные (например, OBJECTPROPERTY), могут возвращать значение NULL, если у пользователя нет разрешения на доступ к объекту. Дополнительные сведения см. в разделе Настройка видимости метаданных.
Замечания
Компонент Компонент 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).
Примеры
А.Проверка того, что объект является таблицей
В следующем примере производится проверка, является ли 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
В.Поиск объектов, принадлежащих определенной схеме
В следующем примере свойство SchemaId возвращает все объекты, которые принадлежат схеме Production.
USE AdventureWorks2012;
GO
SELECT name, object_id, type_desc
FROM sys.objects
WHERE OBJECTPROPERTY(object_id, N'SchemaId') = SCHEMA_ID(N'Production')
ORDER BY type_desc, name;
GO
См. также
Справочник
Функции метаданных (Transact-SQL)
OBJECTPROPERTYEX (Transact-SQL)