OBJECTPROPERTY (Transact-SQL)
Возвращает данные об объектах области схемы в текущей базе данных. Список объектов области схемы см. в разделе sys.objects (Transact-SQL). Эта функция не может использоваться для объектов вне области схемы, таких как триггеры языка определения данных (DDL) и уведомления о событиях.
Синтаксис
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 = выключен
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
Таблица
Объект содержит триггер INSERT.
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
Таблица
Максимальное количество байтов, допустимое для текста в строке.
0, если не установлен параметр текст в строке.
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'AdventureWorks2008R2.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 таблицей в базе данных База данных AdventureWorks2008R2.
USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
GO
SELECT OBJECTPROPERTY(OBJECT_ID('dbo.ufnGetProductDealerPrice'), 'IsDeterministic');
GO
Результирующий набор показывает, что функция ufnGetProductDealerPrice не является детерминированной.
-----
0
В. Поиск объектов, принадлежащих определенной схеме
В следующем примере свойство SchemaId возвращает все объекты, которые принадлежат схеме Production.
USE AdventureWorks2008R2;
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