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


OBJECT_ID (Transact-SQL)

Изменения: 17 июля 2006 г.

Возвращает идентификационный номер объекта базы данных для объекта области схемы.

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

ms190328.note(ru-ru,SQL.90).gifВажно!
Объекты, которые не принадлежат области схемы, такие как триггеры DDL, не могут быть запрошены с помощью функции OBJECT_ID. Для объектов, которые не найдены в представлении каталога sys.objects, следует получить идентификационные номера объектов с помощью запроса соответствующих представлений каталогов. Например, чтобы получить идентификатор триггера DDL, используйте инструкцию SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'

Синтаксис

OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ] 
    object_name' [ ,'object_type' ] )

Аргументы

  • 'object_name'
    Объект, который будет использоваться. Аргумент object_name имеет тип varchar или nvarchar. Если аргумент object_name имеет тип varchar, он неявно преобразуется к типу nvarchar. Не обязательно указывать имена базы данных и схемы.
  • 'object_type'
    Тип объекта области схемы. Аргумент object_type имеет тип varchar или nvarchar. Если аргумент object_type имеет тип varchar, он неявно преобразуется к типу nvarchar. Список объектов можно просмотреть в столбце type представления каталога sys.objects (Transact-SQL).

Исключения

Возвращает NULL при ошибке.

В SQL Server 2005 пользователь может просматривать только метаданные защищаемых объектов, которыми он владеет или на которые ему были предоставлены разрешения. Это означает, что встроенные функции, создающие метаданные, такие как OBJECT_ID, могут вернуть значение NULL в случае, если пользователь не имеет разрешений на объект. Дополнительные сведения см. в разделах Настройка видимости метаданных и Устранение неполадок, связанных с видимостью метаданных.

Замечания

Если параметр системной функции является необязательным, то предполагаются текущие база данных, компьютер размещения, пользователь сервера или пользователь базы данных. За встроенными функциями всегда должны следовать круглые скобки.

Если указано имя временной таблицы, то имя базы данных должно стоять перед именем временной таблицы, если только текущая база данных — не tempdb. Например: SELECT OBJECT_ID('tempdb..#mytemptable').

Системные функции можно использовать в списке выбора, в предложении WHERE и в любом месте, где разрешается использование выражений. Дополнительные сведения см. в разделах Выражения (Transact-SQL) и Предложение WHERE (Transact-SQL).

Возвращаемые типы

int

Примеры

А. Получение идентификатора указанного объекта

Следующий пример возвращает идентификатор объекта для таблицы Production.WorkOrder в базе данных AdventureWorks.

USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks.Production.WorkOrder') AS 'Object ID';
GO

Б. Проверка существования объекта

Следующий пример проверяет существование указанной таблицы, проверяя наличие у таблицы идентификатора объекта. Если таблица существует, она удаляется. Если таблица не существует, то инструкция DROP TABLE не выполняется.

USE AdventureWorks;
GO
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO

В. Использование функции OBJECT_ID для указания значения параметра системной функции

В следующем примере возвращаются сведения по всем индексам и секциям таблицы Person.Address в базе данных AdventureWorks с помощью функции sys.dm_db_index_operational_stats.

ms190328.note(ru-ru,SQL.90).gifВажно!
При использовании для возврата значений параметров функций DB_ID и OBJECT_ID языка Transact-SQL необходимо убедиться в допустимости возвращаемого идентификатора. Если имя базы данных или объекта не может быть найдено, например если база данных или объект не существуют или неправильно записаны, то обе функции возвратят значение NULL. Функция sys.dm_db_index_operational_stats интерпретирует значение NULL как значение шаблона, указывающего все базы данных или все объекты. Так как эта операция может быть непреднамеренной, примеры в этом разделе демонстрируют безопасный способ определения идентификаторов базы данных и объекта.
DECLARE @db_id int;
DECLARE @object_id int;
SET @db_id = DB_ID(N'AdventureWorks');
SET @object_id = OBJECT_ID(N'AdventureWorks.Person.Address');
IF @db_id IS NULL 
  BEGIN;
    PRINT N'Invalid database';
  END;
ELSE IF @object_id IS NULL
  BEGIN;
    PRINT N'Invalid object';
  END;
ELSE
  BEGIN;
    SELECT * FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);
  END;
GO

См. также

Справочник

Функции метаданных (Transact-SQL)
sys.objects (Transact-SQL)
sys.dm_db_index_operational_stats
OBJECT_DEFINITION (Transact-SQL)
OBJECT_NAME (Transact-SQL)

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

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

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

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

17 июля 2006 г.

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

14 апреля 2006 г.

Обновления
  • Исправлен пример В.