다음을 통해 공유


OBJECT_ID(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

스키마 범위 개체의 데이터베이스 개체 ID를 반환합니다.

스키마 범위가 아닌 개체(예: DDL(데이터 정의 언어) 트리거)는 사용하여 OBJECT_ID쿼리할 수 없습니다. sys.objects 카탈로그 뷰에서 찾을 수 없는 개체 의 경우 적절한 카탈로그 뷰를 쿼리하여 개체 ID 번호를 가져옵니다. 예를 들어 DDL 트리거의 개체 ID 번호를 반환하려면 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_namevarchar 또는 nvarchar입니다. object_name varchar은 암시적으로 nvarchar변환됩니다. 데이터베이스 및 스키마 이름 지정은 옵션입니다.

N'object_type'

스키마 범위 개체 형식입니다. object_typevarchar 또는 nvarchar입니다. object_type varchar은 암시적으로 nvarchar변환됩니다. 개체 형식의 목록은 sys.objects(Transact-SQL)type 열을 참조하세요.

반환 형식

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 예시 및 커뮤니티 프로젝트(Microsoft SQL Server Samples and Community Projects) 홈 페이지에서 다운로드할 수 있습니다.

A. 지정된 개체의 개체 ID를 반환합니다.

다음 예제에서는 데이터베이스의 테이블에 대한 Production.WorkOrder 개체 ID를 반환합니다 AdventureWorks2022 .

USE master;
GO

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

B. 개체가 있는지 확인

다음 예에서는 테이블에 개체 ID가 있는지 확인해서 지정한 테이블이 있는지 확인합니다. 테이블이 있는 경우 삭제됩니다. 테이블이 없 DROP TABLE 으면 문이 실행되지 않습니다.

USE AdventureWorks2022;
GO

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

C. OBJECT_ID 사용하여 시스템 함수 매개 변수의 값 지정

다음 예제에서는 sys.dm_db_index_operational_stats 함수를 사용하여 데이터베이스에 있는 AdventureWorks2022 테이블의 Person.Address 모든 인덱스 및 파티션에 대한 정보를 반환합니다.

참고 항목

이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.

Transact-SQL 함수를 DB_ID OBJECT_ID 사용하고 매개 변수 값을 반환하는 경우 항상 유효한 ID가 반환되는지 확인합니다. 데이터베이스 또는 개체 이름이 없거나 철자가 잘못되었을 때와 같이 데이터베이스 또는 개체 이름을 찾을 수 없으면 두 함수가 모두 반환 NULL됩니다. 함수는 sys.dm_db_index_operational_stats 모든 데이터베이스 또는 모든 개체를 지정하는 와일드카드 값으로 해석 NULL 됩니다. 이 작업은 의도하지 않을 수 있으므로 이 섹션의 예제에서는 데이터베이스 및 개체 ID를 확인하는 안전한 방법을 보여 줍니다.

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. 지정된 개체의 개체 ID를 반환합니다.

다음 예제에서는 AdventureWorksPDW2022 데이터베이스의 FactFinance 테이블에 대한 개체 ID를 반환합니다.

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