OBJECTPROPERTYEX (Transact-SQL)

Изменения: 12 декабря 2006 г.

Возвращает данные об объектах области схемы в текущей базе данных. Перечень этих объектов содержится в разделе sys.objects (Transact-SQL). Функция OBJECTPROPERTYEX не может применяться к объектам, недоступным в области, например: триггерам DDL и уведомлениям о событиях.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

OBJECTPROPERTYEX ( id , property )

Аргументы

  • id
    Выражение, представляющее идентификатор объекта в текущей базе данных. Аргумент id имеет тип int. Предполагается, что он является объектом области схемы в контексте текущей базы данных.
  • property
    Выражение, содержащее сведения, которые необходимо вернуть для объекта, указываемого идентификатором. Возвращаемое значение имеет тип sql_variant. В следующей таблице перечислены базовые типы данных для каждого из свойств.

    ms188390.note(ru-ru,SQL.90).gifПримечание.
    Если не указано иное, значение NULL возвращается в тех случаях, когда аргумент property не является допустимым именем свойства, аргумент id не является допустимым идентификатором объекта, аргумент id является неподдерживаемым типом объекта для указанного аргумента property или если участник не имеет разрешения на просмотр метаданных объекта.

    Имя свойства

Типы возвращаемых данных

sql_variant

Исключения

Возвращает значение NULL при ошибке или когда у вызывающего пользователя нет разрешения на просмотр объекта.

В SQL Server 2005 пользователь может просматривать метаданные только тех защищаемых объектов, которыми он владеет или на просмотр которых получил разрешение. Это значит, что встроенные функции, создающие метаданные (например, 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

См. также

Справочник

CREATE SYNONYM (Transact-SQL)
Функции метаданных (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)
OBJECT_NAME (Transact-SQL)
sys.objects (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)

Другие ресурсы

Отделение пользователей от схем

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

12 декабря 2006 г.

Новое содержимое
  • Добавлено свойство TableHasVarDecimalStorageFormat, доступное в пакете обновления 2 (SP2).

17 июля 2006 г.

Новое содержимое
  • Добавлен раздел «Исключения».

5 декабря 2005 г.

Измененное содержимое
  • Исправлено определение свойств IsTableFunction и IsScalarFunction.
  • Изменен пример В.