OBJECT_ID (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)

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

Важно!

Запросы на объекты, не относящиеся к области схемы, например триггеры DDL, не могут выполняться с использованием OBJECT_ID. Для объектов, не найденных в представлении каталога sys.objects, идентификационный номер проставляется с помощью запроса к соответствующему представлению каталога. Например, чтобы получить идентификационный номер триггера DDL, используйте инструкцию SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog``'.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

'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).

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

int

Исключения

Для пространственного индекса функция OBJECT_ID возвращает значение NULL.

В случае ошибки возвращает значение NULL.

Пользователь может просматривать только метаданные защищаемых объектов, которыми он владеет или на которые пользователю были предоставлены разрешения. Это означает, что встроенные функции, создающие метаданные, такие как OBJECT_ID, могут вернуть значение NULL в случае, если пользователь не имеет разрешений на объект. Дополнительные сведения см. в разделе Metadata Visibility Configuration.

Замечания

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

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

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

Примеры

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

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

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

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

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

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

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

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

Примечание.

Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Важно!

При использовании функций Transact-SQL DB_ID и OBJECT_ID для возврата значений параметров обязательно проверяйте допустимость возвращаемого идентификатора. Если имя базы данных или объекта не может быть найдено, например если база данных или объект не существуют или неправильно записаны, то обе функции возвратят значение NULL. Функция sys.dm_db_index_operational_stats интерпретирует значение NULL как значение шаблона, соответствующее всем базам данных или все объектам. Так как эта операция может быть непреднамеренной, примеры в этом разделе демонстрируют безопасный способ определения идентификаторов базы данных и объекта.

DECLARE @db_id INT;  
DECLARE @object_id INT;  
SET @db_id = DB_ID(N'AdventureWorks2022');  
SET @object_id = OBJECT_ID(N'AdventureWorks2022.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  

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

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

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

SELECT OBJECT_ID('AdventureWorksPDW2012.dbo.FactFinance') AS 'Object ID';  

См. также

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