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) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

N'object_name'

Объект, который должен использоваться. Аргумент object_name имеет тип varchar или nvarchar. Значение varchar object_nameнеявно преобразуется в nvarchar. Не обязательно указывать имена базы данных и схемы.

N'object_type'

Тип объекта область схемы. Аргумент object_type имеет тип varchar или nvarchar. Значение varchar object_typeнеявно преобразуется в 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).

Примеры

В этой статье требуется AdventureWorks2022 пример базы данных, которую можно скачать на домашней странице примеров и проектов сообщества Microsoft SQL Server.

А. Возвращает идентификатор объекта для указанного объекта

Следующий пример возвращает идентификатор объекта для таблицы 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.

При использовании функций DB_ID Transact-SQL и 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)

D. Возвращает идентификатор объекта для указанного объекта

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

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