OBJECT_NAME(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
스키마 범위 개체에 대한 데이터베이스 개체 이름을 반환합니다. 스키마 범위 개체 목록은 sys.objects(Transact-SQL)를 참조하세요.
구문
OBJECT_NAME ( object_id [, database_id ] )
인수
object_id
사용할 개체의 ID입니다. object_id는 int이며 지정한 데이터베이스 또는 현재 데이터베이스 컨텍스트에서 스키마 범위 개체로 간주됩니다.
database_id
개체를 조회하려는 데이터베이스의 ID입니다. database_id는 int입니다.
반환 형식
sysname
예외
오류가 발생하거나 호출자가 개체를 볼 수 있는 권한을 갖고 있지 않으면 NULL을 반환합니다. 대상 데이터베이스에서 AUTO_CLOSE 옵션을 ON으로 설정하면 함수가 데이터베이스를 엽니다.
사용자는 소유하고 있거나 사용 권한을 부여 받은 보안 개체의 메타데이터만 볼 수 있습니다. 즉, 사용자가 개체에 대한 사용 권한이 없으면 OBJECT_NAME과 같은 메타데이터 내보내기 기본 제공 함수가 NULL을 반환합니다. 자세한 내용은 Metadata Visibility Configuration을 참조하세요.
사용 권한
개체에 대한 ANY 권한이 필요합니다. 데이터베이스 ID를 지정하려면 데이터베이스에 대해 CONNECT 권한도 필요합니다. 그렇지 않으면 게스트 계정을 설정해야 합니다.
설명
시스템 함수는 선택 목록, WHERE 절 및 식이 허용되는 모든 곳에서 사용될 수 있습니다. 자세한 내용은 식 및 WHERE를 참조하세요.
이 시스템 함수에서 반환하는 값에서는 현재 데이터베이스의 데이터 정렬을 사용합니다.
기본적으로 SQL Server 데이터베이스 엔진은 object_id가 현재 데이터베이스의 컨텍스트에 있는 것으로 간주합니다. 다른 데이터베이스의 object_id를 참조하는 쿼리는 NULL 또는 잘못된 결과를 반환합니다. 예를 들어 다음 쿼리에서 현재 데이터베이스의 컨텍스트는 AdventureWorks2022입니다. 데이터베이스 엔진은 쿼리의 FROM 절에 지정된 데이터베이스 대신 이 데이터베이스의 지정된 개체 ID에 대한 개체 이름을 반환하려고 합니다. 따라서 잘못된 정보가 반환됩니다.
USE AdventureWorks2022;
GO
SELECT DISTINCT OBJECT_NAME(object_id)
FROM master.sys.objects;
GO
데이터베이스 ID를 지정하여 다른 데이터베이스의 컨텍스트에서 개체 이름을 확인할 수 있습니다. 다음 예에서는 master
함수에서 OBJECT_SCHEMA_NAME
데이터베이스에 대한 데이터베이스 ID를 지정하고 올바른 결과를 반환합니다.
USE AdventureWorks2022;
GO
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name
FROM master.sys.objects;
GO
예제
A. WHERE 절에서 OBJECT_NAME 사용
다음 예에서는 sys.objects
문의 OBJECT_NAME
절에서 WHERE
으로 지정한 개체에 대한 열을 SELECT
카탈로그 뷰에서 반환합니다.
USE AdventureWorks2022;
GO
DECLARE @MyID INT;
SET @MyID = (SELECT OBJECT_ID('AdventureWorks2022.Production.Product',
'U'));
SELECT name, object_id, type_desc
FROM sys.objects
WHERE name = OBJECT_NAME(@MyID);
GO
B. 개체 스키마 이름 및 개체 이름 반환
다음 예에서는 임시 문이나 준비된 문이 아닌 모든 캐시된 쿼리 계획에 대한 개체 스키마 이름, 개체 이름 및 SQL 텍스트를 반환합니다.
SELECT DB_NAME(st.dbid) AS database_name,
OBJECT_SCHEMA_NAME(st.objectid, st.dbid) AS schema_name,
OBJECT_NAME(st.objectid, st.dbid) AS object_name,
st.text AS query_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
WHERE st.objectid IS NOT NULL;
GO
C. 세 부분으로 된 개체 이름 반환
다음 예에서는 모든 데이터베이스의 모든 개체에 대해 sys.dm_db_index_operational_stats
동적 관리 뷰의 모든 다른 열과 함께 데이터베이스, 스키마 및 개체 이름을 반환합니다.
SELECT QUOTENAME(DB_NAME(database_id))
+ N'.'
+ QUOTENAME(OBJECT_SCHEMA_NAME(object_id, database_id))
+ N'.'
+ QUOTENAME(OBJECT_NAME(object_id, database_id))
, *
FROM sys.dm_db_index_operational_stats(NULL, NULL, NULL, NULL);
GO
예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)
D. WHERE 절에서 OBJECT_NAME 사용
다음 예에서는 sys.objects
문의 OBJECT_NAME
절에서 WHERE
으로 지정한 개체에 대한 열을 SELECT
카탈로그 뷰에서 반환합니다. (개체 번호(아래 예에서 274100017)는 달라집니다. 이 예를 테스트하려면 각자의데이터베이스에서 SELECT name, object_id FROM sys.objects;
를 실행하여 유효한 개체 번호를 조회하세요.)
SELECT name, object_id, type_desc
FROM sys.objects
WHERE name = OBJECT_NAME(274100017);
관련 항목
메타데이터 함수(Transact-SQL)
OBJECT_DEFINITION(Transact-SQL)
OBJECT_ID(Transact-SQL)