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


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 = выключен

    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