OBJECT_ID (Transact-SQL)
Эта статья переведена вручную. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
Перевод
Текст оригинала

OBJECT_ID (Transact-SQL)

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

Важное примечание Важно!

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Важное примечание Важно!

При использовании для возврата значений параметров функций 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'AdventureWorks2012');
SET @object_id = OBJECT_ID(N'AdventureWorks2012.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

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2016 Microsoft