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'
를 사용하세요.
구문
OBJECT_ID ( ' [ database_name . [ schema_name ] . | schema_name . ]
object_name' [ , 'object_type' ] )
인수
N'object_name'
사용할 개체입니다. object_name은 varchar 또는 nvarchar입니다. object_name varchar 값은 암시적으로 nvarchar로 변환됩니다. 데이터베이스 및 스키마 이름 지정은 옵션입니다.
N'object_type'
스키마 범위 개체 형식입니다. object_type은 varchar 또는 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';