OBJECTPROPERTYEX (Transact-SQL)
Возвращает данные об объектах области схемы в текущей базе данных. Перечень этих объектов содержится в разделе sys.objects (Transact-SQL). Функция OBJECTPROPERTYEX не может применяться к объектам, недоступным в области, например: триггерам DDL и уведомлениям о событиях.
Синтаксис
OBJECTPROPERTYEX ( id , property )
Аргументы
id
Выражение, представляющее идентификатор объекта в текущей базе данных. Аргумент id имеет тип int. Предполагается, что он является объектом области схемы в контексте текущей базы данных.property
Выражение, содержащее сведения, которые необходимо вернуть для объекта, указываемого идентификатором. Возвращаемое значение имеет тип sql_variant. В следующей таблице перечислены базовые типы данных для каждого из свойств.Примечание Если не указано иное, значение NULL возвращается в следующих случаях: если аргумент property не является допустимым именем свойства, если аргумент id не является допустимым идентификатором объекта, если аргумент id не является поддерживаемым типом объекта для указанного property или если вызывающая сторона не имеет разрешения на просмотр метаданных объекта.
Имя свойства
Тип объекта
Описание и возвращаемые значения
BaseType
Любой объект области схемы
Идентифицирует базовый тип объекта. Если указанный объект — SYNONYM, возвращается базовый тип соответствующего объекта.
Не NULL = Тип объекта
Базовый тип данных: char(2). char(2)
CnstIsClustKey
Ограничение
Ограничение PRIMARY KEY с кластеризованным индексом:
1 = True;
0 = False.
Базовый тип данных: int. int
CnstIsColumn
Ограничение
Ограничение CHECK, DEFAULT или FOREIGN KEY на одиночный столбец:
1 = True;
0 = False.
Базовый тип данных: int. int
CnstIsDeleteCascade
Ограничение
Ограничение FOREIGN KEY с параметром ON DELETE CASCADE:
1 = True;
0 = False.
Базовый тип данных: int. int
CnstIsDisabled
Ограничение
Отключенное ограничение:
1 = True;
0 = False.
Базовый тип данных: int. int
CnstIsNonclustKey
Ограничение
Ограничение PRIMARY KEY с некластеризованным индексом:
1 = True;
0 = False.
Базовый тип данных: int. int
CnstIsNotRepl
Ограничение
Ограничение определено с помощью ключевых слов NOT FOR REPLICATION:
1 = True;
0 = False.
Базовый тип данных: int. int
CnstIsNotTrusted
Ограничение
Ограничение было включено без проверки существующих строк, то есть ограничение может выполняться не для всех строк.
1 = True;
0 = False.
Базовый тип данных: int. int
CnstIsUpdateCascade
Ограничение
Ограничение FOREIGN KEY с параметром ON UPDATE CASCADE:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsAfterTrigger
Триггер
Триггер AFTER:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsAnsiNullsOn
Функция Transact-SQL, процедура Transact-SQL, триггер Transact-SQL, представление
Значение параметра ANSI_NULLS на момент создания:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsDeleteTrigger
Триггер
Триггер DELETE:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsFirstDeleteTrigger
Триггер
Первый триггер, срабатывающий при выполнении инструкции DELETE для таблицы:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsFirstInsertTrigger
Триггер
Первый триггер, срабатывающий при выполнении инструкции INSERT для таблицы:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsFirstUpdateTrigger
Триггер
Первый триггер, срабатывающий при выполнении инструкции UPDATE для таблицы:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsInsertTrigger
Триггер
Триггер INSERT:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsInsteadOfTrigger
Триггер
Триггер INSTEAD OF:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsLastDeleteTrigger
Триггер
Последний триггер, срабатывающий при выполнении инструкции DELETE для таблицы:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsLastInsertTrigger
Триггер
Последний триггер, срабатывающий при выполнении инструкции INSERT для таблицы:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsLastUpdateTrigger
Триггер
Последний триггер, срабатывающий при выполнении инструкции UPDATE для таблицы:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsQuotedIdentOn
Функция Transact-SQL, процедура Transact-SQL, триггер Transact-SQL, представление
Значение параметра QUOTED_IDENTIFIER на момент создания:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsStartup
Процедура
Процедура запуска:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsTriggerDisabled
Триггер
Триггер отключен:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsTriggerNotForRepl
Триггер
Триггер, определенный как NOT FOR REPLICATION:
1 = True;
0 = False.
Базовый тип данных: int. int
ExecIsUpdateTrigger
Триггер
Триггер UPDATE:
1 = True;
0 = False.
Базовый тип данных: int. int
HasAfterTrigger
Таблица, представление
Таблица или представление с триггером AFTER:
1 = True;
0 = False.
Базовый тип данных: int. int
HasDeleteTrigger
Таблица, представление
Таблица или представление с триггером DELETE:
1 = True;
0 = False.
Базовый тип данных: int. int
HasInsertTrigger
Таблица, представление
Таблица или представление с триггером INSERT:
1 = True;
0 = False.
Базовый тип данных: int. int
HasInsteadOfTrigger
Таблица, представление
Таблица или представление с триггером INSTEAD OF:
1 = True;
0 = False.
Базовый тип данных: int. int
HasUpdateTrigger
Таблица, представление
Таблица или представление с триггером UPDATE:
1 = True;
0 = False.
Базовый тип данных: int. int
IsAnsiNullsOn
Функция Transact-SQL, процедура Transact-SQL, таблица, триггер Transact-SQL, представление
Указывает, что значение параметра ANSI NULLS для таблицы равно ON, что означает, что все сравнения со значением NULL имеют результат UNKNOWN. Эта установка относится ко всем выражениям в определении таблицы, включая вычисляемые столбцы и ограничения, в течение всего времени существования таблицы:
1 = True;
0 = False.
Базовый тип данных: int. int
IsCheckCnst
Любой объект области схемы
Ограничение CHECK:
1 = True;
0 = False.
Базовый тип данных: int. int
IsConstraint
Любой объект области схемы
Ограничение:
1 = True;
0 = False.
Базовый тип данных: int. int
IsDefault
Любой объект области схемы
Привязанное значение по умолчанию:
1 = True;
0 = False.
Базовый тип данных: int. int
IsDefaultCnst
Любой объект области схемы
Ограничение DEFAULT:
1 = True;
0 = False.
Базовый тип данных: int. int
IsDeterministic
Скалярная функция или возвращающая табличное значение функция, представление
Свойство детерминизма функции или представления:
1 = Детерминированная
0 = Недетерминированная
Базовый тип данных: int. int
IsEncrypted
Функция Transact-SQL, процедура Transact-SQL, таблица, триггер Transact-SQL, представление
Указывает, что исходный текст инструкции модуля был преобразован в запутанный формат. Результат запутывания не виден непосредственно ни в одном представлении каталога SQL Server 2005. Пользователи, не имеющие доступа к системным таблицам или файлам баз данных, не могут получить текст, подвергнутый запутыванию. Однако этот текст будет доступен пользователям, которые имеют либо доступ к системным таблицам через порт DAC, либо непосредственный доступ к файлам баз данных. Кроме того, пользователь, имеющий возможность подключить отладчик к серверному процессу, сможет получить исходный текст процедуры из памяти во время выполнения.
1 = зашифрован
0 = не зашифрован
Базовый тип данных: int. int
IsExecuted
Любой объект области схемы
Указывает, может ли объект быть выполнен (представление, процедура, функция или триггер):
1 = True;
0 = False.
Базовый тип данных: int. int
IsExtendedProc
Любой объект области схемы
Расширенная процедура:
1 = True;
0 = False.
Базовый тип данных: int. int
IsForeignKey
Любой объект области схемы
Ограничение FOREIGN KEY:
1 = True;
0 = False.
Базовый тип данных: int. int
IsIndexed
Таблица, представление
Таблица или представление с индексом:
1 = True;
0 = False.
Базовый тип данных: int. int
IsIndexable
Таблица, представление
Таблица или представление, для которого может быть создан индекс:
1 = True;
0 = False.
Базовый тип данных: int. int
IsInlineFunction
Функция
Встроенная функция:
1 = Встроенная функция;
0 = Невстроенная функция.
Базовый тип данных: int. int
IsMSShipped
Любой объект области схемы
Объект создан во время установки SQL Server.
1 = True;
0 = False.
Базовый тип данных: int. int
IsPrecise
Вычисляемый столбец, функция, определяемый пользователем тип, представление
Указывает, содержит ли объект вычисления с потерей точности (например: операции с плавающей запятой):
1 = Точные вычисления;
0 = Вычисления с потерей точности.
Базовый тип данных: int. int
IsPrimaryKey
Любой объект области схемы
Ограничение PRIMARY KEY:
1 = True;
0 = False.
Базовый тип данных: int. int
IsProcedure
Любой объект области схемы
Процедура:
1 = True;
0 = False.
Базовый тип данных: int. int
IsQuotedIdentOn
Ограничение CHECK, определение DEFAULT, функция Transact-SQL, процедура Transact-SQL, таблица, триггер Transact-SQL, представление
Указывает, что параметр «идентификатор в кавычках» для объекта равен ON, что означает, что во всех выражениях, присутствующих в определении объекта, идентификаторы заключаются в двойные кавычки:
1 = True;
0 = False.
Базовый тип данных: int. int
IsQueue
Любой объект области схемы
Очередь компонента Service Broker:
1 = True;
0 = False.
Базовый тип данных: int. int
IsReplProc
Любой объект области схемы
Процедура репликации:
1 = True;
0 = False.
Базовый тип данных: int. int
IsRule
Любой объект области схемы
Привязанное правило:
1 = True;
0 = False.
Базовый тип данных: int. int
IsScalarFunction
Функция
Скалярная функция:
1 = Скалярная функция;
0 = Нескалярная функция.
Базовый тип данных: int. int
IsSchemaBound
Функция, представление
Функция или представление, созданное с параметром SCHEMABINDING:
1 = Привязан к схеме;
0 = Не привязан к схеме.
Базовый тип данных: int. int
IsSystemTable
Таблица
Системная таблица:
1 = True;
0 = False.
Базовый тип данных: int. int
IsSystemVerified
Вычисляемый столбец, функция, определяемый пользователем тип, представление
Свойства точности и детерминизма объекта могут быть проверены SQL Server:
1 = True;
0 = False.
Базовый тип данных: int. int
IsTable
Таблица
Таблица:
1 = True;
0 = False.
Базовый тип данных: int. int
IsTableFunction
Функция
Функция, возвращающая табличное значение:
1 = Возвращающая табличное значение функция;
0 = Не возвращающая табличное значение функция.
Базовый тип данных: int. int
IsTrigger
Любой объект области схемы
Триггер:
1 = True;
0 = False.
Базовый тип данных: int. int
IsUniqueCnst
Любой объект области схемы
Ограничение UNIQUE:
1 = True;
0 = False.
Базовый тип данных: int. int
IsUserTable
Таблица
Пользовательская таблица:
1 = True;
0 = False.
Базовый тип данных: int. int
IsView
Представление
Представление:
1 = True;
0 = False.
Базовый тип данных: int. int
OwnerId
Любой объект области схемы
Владелец объекта.
ПримечаниеВладелец схемы не обязательно является владельцем объекта. Например: дочерние объекты (такие, у которых аргумент parent_object_id не равен NULL) всегда возвращают в качестве родителя один и тот же идентификатор владельца.Не NULL = Идентификатор пользователя базы данных — владельца объекта.
NULL = Недопустимый идентификатор объекта или тип объекта не поддерживается.
Базовый тип данных: int. int
SchemaId
Любой объект области схемы
Идентификатор схемы, связанной с объектом.
Не NULL = Идентификатор схемы объекта.
Базовый тип данных: int. int
SystemDataAccess
Функция, представление
Объект производит доступ к системным данным, системным каталогам или виртуальным системным таблицам в локальном экземпляре SQL Server.
0 = Нет;
1 = Чтение.
Базовый тип данных: int. int
TableDeleteTrigger
Таблица
В таблице существует триггер DELETE.
>1 = Идентификатор первого триггера указанного типа.
Базовый тип данных: int. int
TableDeleteTriggerCount
Таблица
В таблице существует указанное число триггеров типа DELETE.
Не NULL = Число триггеров DELETE.
Базовый тип данных: int. int
TableFullTextMergeStatus
Table
Определяет, участвует ли в настоящий момент полнотекстовый индекс для таблицы в процессе слияния.
0 = для таблицы отсутствует полнотекстовый индекс, либо индекс не находится в процессе слияния.
1 = полнотекстовый индекс находится в процессе слияния.
TableFullTextBackgroundUpdateIndexOn
Таблица
Таблица содержит включенный полнотекстовый индекс (с автоматическим отслеживанием изменений) с фоновым обновлением:
1 = TRUE;
0 = FALSE.
Базовый тип данных: int. int
TableFulltextCatalogId
Таблица
Идентификатор полнотекстового каталога, в котором находятся данные полнотекстового индекса для таблицы.
Не 0 = идентификатор полнотекстового каталога, связанный с уникальным индексом, идентифицирующим строки в полнотекстовой индексированной таблице.
0 = Таблица не имеет полнотекстового индекса.
Базовый тип данных: int. int
TableFullTextChangeTrackingOn
Таблица
В таблице включено полнотекстовое отслеживание изменений:
1 = TRUE;
0 = FALSE.
Базовый тип данных: int. int
TableFulltextDocsProcessed
Таблица
Количество строк, обработанных с начала полнотекстового индексирования. В таблице, которая индексируется для полнотекстового поиска, все столбцы одной строки рассматриваются как часть единого индексируемого документа.
0 = отсутствие активного сканирования или полнотекстовое индексирование закончено.
> 0 = Один из следующих вариантов:
Количество документов, обработанных с использованием операций вставки или обновления с начала полного, добавочного или ручного заполнения с отслеживанием изменений.
Число строк, обработанных операциями вставки или обновления с момента включения отслеживания изменений при фоновом заполнении индекса обновления, изменения схемы полнотекстового индекса, повторного построения полнотекстового каталога, перезапуска экземпляра SQL Server и т. д.
NULL = Таблица не содержит полнотекстового индекса.
Базовый тип данных: int. int
Примечание Это свойство не отслеживает и не подсчитывает удаленные строки.
TableFulltextFailCount
Таблица
Число строк, не проиндексированных для полнотекстового поиска.
0 = Заполнение завершено.
>0 = Один из следующих вариантов:
количество документов, не индексированных с начала заполнения отслеживания изменений полного, постепенного или ручного обновления;
для отслеживания изменений с индексацией фонового обновления — число строк, которые не проиндексированы с начала или перезапуска заполнения. Это может быть вызвано изменением схемы, перестройкой каталога, перезапуском сервера и т. д.
NULL = Таблица не содержит полнотекстового индекса.
Базовый тип данных: int. int
TableFulltextItemCount
Таблица
Не NULL = Число строк, которые были успешно проиндексированы.
NULL = Таблица не содержит полнотекстового индекса.
Базовый тип данных: int. int
TableFulltextKeyColumn
Таблица
Идентификатор столбца, связанного с уникальным индексом одного столбца, который участвует в определении полнотекстового индекса:
0 = Таблица не имеет полнотекстового индекса.
Базовый тип данных: int. int
TableFulltextPendingChanges
Таблица
Количество строк, обработанных с начала полнотекстового индексирования.
0 = Отслеживание изменений не включено.
NULL = Таблица не содержит полнотекстового индекса.
Базовый тип данных: int. int
TableFulltextPopulateStatus
Таблица
0 = Бездействует.
1 = Производится полное заполнение.
2 = Производится добавочное заполнение.
3 = Выполняется распространение отслеженных изменений.
4 = Выполняется индексирование фонового обновления (например автоматическое отслеживание изменений).
5 = Полнотекстовое индексирование приостановлено или не хватает ресурсов на его выполнение.
Базовый тип данных: int. int
TableHasActiveFulltextIndex
Таблица
Таблица содержит активный полнотекстовый индекс:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasCheckCnst
Таблица
Таблица содержит ограничение CHECK:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasClustIndex
Таблица
Таблица содержит кластеризованный индекс:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasDefaultCnst
Таблица
Таблица содержит ограничение DEFAULT:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasDeleteTrigger
Таблица
В таблице существует триггер DELETE:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasForeignKey
Таблица
Таблица содержит ограничение FOREIGN KEY:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasForeignRef
Таблица
На таблицу есть ссылки по ограничению FOREIGN KEY:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasIdentity
Таблица
Таблица содержит столбец идентификаторов:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasIndex
Таблица
Таблица содержит индекс какого-либо типа:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasInsertTrigger
Таблица
Объект содержит триггер INSERT:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasNonclustIndex
Таблица
Таблица содержит некластеризованный индекс:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasPrimaryKey
Таблица
Таблица содержит первичный ключ:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasRowGuidCol
Таблица
Таблица содержит свойство ROWGUIDCOL для столбца uniqueidentifier :
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasTextImage
Таблица
Таблица содержит столбец text, ntext или image:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasTimestamp
Таблица
Таблица содержит столбец timestamp:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasUniqueCnst
Таблица
Таблица содержит ограничение UNIQUE:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasUpdateTrigger
Таблица
Объект содержит триггер UPDATE:
1 = True;
0 = False.
Базовый тип данных: int. int
TableHasVarDecimalStorageFormat
Таблица
Для таблицы включен формат хранения vardecimal.
1 = True;
0 = False.
TableInsertTrigger
Таблица
Таблица содержит триггер INSERT.
>1 = Идентификатор первого триггера указанного типа
Базовый тип данных: int. int
TableInsertTriggerCount
Таблица
В таблице существует указанное число триггеров типа INSERT.
>0 = Количество триггеров INSERT
Базовый тип данных: int. int
TableIsFake
Таблица
Таблица реально не существует. Компонент Database Engine материализует ее внутренним образом по запросу.
1 = True;
0 = False.
Базовый тип данных: int. int
TableIsLockedOnBulkLoad
Таблица
Таблица блокирована bcp или заданием BULK INSERT:
1 = True;
0 = False.
Базовый тип данных: int. int
TableIsPinned
Таблица
Таблица закреплена для хранения в кэше данных.
0 = False.
Эта функция не поддерживается в SQL Server 2005 и более поздних версиях.
TableTextInRowLimit
Таблица
Для таблицы установлен параметр TEXT IN ROW.
> 0 = Максимальное число байтов, допустимых для TEXT IN ROW.
0 = Параметр TEXT IN ROW не установлен.
Базовый тип данных: int
TableUpdateTrigger
Таблица
Таблица содержит триггер UPDATE.
>1 = Идентификатор первого триггера указанного типа.
Базовый тип данных: int. int
TableUpdateTriggerCount
Таблица
В таблице существует указанное число триггеров типа UPDATE.
>0 = Количество триггеров UPDATE.
Базовый тип данных: int. int
UserDataAccess
Функция, представление
Указывает, что объект производит доступ к пользовательским данным, пользовательским таблицам в локальном экземпляре SQL Server.
1 = Чтение.
0 = Нет.
Базовый тип данных: int. int
TableHasColumnSet
Table
Таблица содержит набор столбцов.
0 = False.
1 = True;
Дополнительные сведения см. в разделе Использование наборов столбцов.
Типы возвращаемых данных
sql_variant
Исключения
Возвращает значение NULL при ошибке или когда у вызывающего пользователя нет разрешения на просмотр объекта.
Пользователь может просматривать только метаданные защищаемых объектов, которыми он владеет или на которые пользователю были предоставлены разрешения. Это значит, что встроенные функции, создающие метаданные (например, OBJECTPROPERTYEX), могут возвращать значение NULL, если у пользователя нет разрешения на доступ к объекту. Дополнительные сведения см. в разделах Настройка видимости метаданных и Устранение неполадок, связанных с видимостью метаданных.
Замечания
Компонент Database Engine предполагает, что объект с идентификатором object_id находится в контексте текущей базы данных. Запрос, который ссылается на этот объект в другой базе данных, вернет значение NULL или неверный результат. Например: в следующем запросе контекст текущий базы данных — база данных master. Компонент Database Engine попытается вернуть значение свойства для указанного аргумента object_id в этой базе данных, а не в той, которая указана в запросе. Запрос возвращает неверные результаты, потому что представление vEmployee не содержится в базе данных master.
USE master;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'AdventureWorks.HumanResources.vEmployee'), 'IsView');
GO
Вызов функции OBJECTPROPERTYEX(view_id**,'IsIndexable'**) может потребовать значительного расхода ресурсов компьютера, так как получение значения свойства IsIndexable потребует синтаксического анализа определения представления, нормализации и частичной оптимизации. Даже если свойство IsIndexable определяет, что таблицы или представления могут быть проиндексированы, фактическое создание индекса может завершиться ошибкой, если не выполняются требования к ключу индекса. Дополнительные сведения см. в разделе CREATE INDEX (Transact-SQL).
Вызов OBJECTPROPERTYEX (table_id**,'TableHasActiveFulltextIndex'**) вернет значение 1 (True), если хотя бы один из столбцов таблицы был добавлен для индексирования. Заполнение полнотекстового индекса становится активным, как только для индексирования добавлен хотя бы один столбец.
К результирующему набору применяются ограничения на видимость метаданных. Дополнительные сведения см. в разделе Настройка видимости метаданных.
Примеры
А. Определение базового типа объекта
В следующем примере производится создание синонима MyEmployeeTable для таблицы Employee в базе данных AdventureWorks, а затем для него определяется базовый тип.
USE AdventureWorks;
GO
CREATE SYNONYM MyEmployeeTable FOR HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX ( object_id(N'MyEmployeeTable'), N'BaseType')AS [Base Type];
GO
Результирующий набор показывает, что базовым типом соответствующего объекта, таблицы Employee, является пользовательская таблица.
Base Type
--------
U
Б. Получение значения свойства
Следующий пример показывает, как получить число триггеров UPDATE для указанной таблицы.
USE AdventureWorks;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'HumanResources.Employee'), N'TABLEUPDATETRIGGERCOUNT');
GO
В. Поиск таблиц с ограничением внешнего ключа
В следующих примерах для возврата всех таблиц с ограничением внешнего ключа используется свойство TableHasForeignKey.
USE AdventureWorks;
GO
SELECT name, object_id, schema_id, type_desc
FROM sys.objects
WHERE OBJECTPROPERTYEX(object_id, N'TableHasForeignKey') = 1
ORDER BY name;
GO
См. также