OBJECT_ID (Transact-SQL)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform 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' ] )
Аргументы
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).
Примеры
Примеры кода Transact-SQL в этой статье используют AdventureWorks2022
базу данных или AdventureWorksDW2022
пример базы данных, которую можно скачать с домашней страницы примеров и проектов сообщества 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
В. Используйте 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';